|
|
Perl predavani ref mezi polem
|
18.8.2010 16:41
ikar
|
Zdravim,
narazil jsem na script, a nedokazu pochopit tuto cast:.
sub fce_rozdel {
my ($okruh,$config)=@_;
open FILE,$config or return -1;
my %temp;
while ( <FILE> ) {
my @a=split /:/;
next unless $a[0] eq $okruh;
if ( $a[1] eq "VolNum" ) {
push @{$temp{"seznam_hdd"}},$a[2].":".$a[3].":".$a[4].":".$a[5]; #toto mi neni jasne co se vlastne kam uklada ?
}
close FILE;
return \%temp;
}
my $vysledek = &fce_rozdel($okruh,$config);
$dskent = $temp->{"seznam_hdd"}; # tady je ulozena hodnota napr. ARRAY(0x1911be4).
foreach $line (@$dskent) {
print $line # vypise mi hodnoty ktere byly vlozeny v fce_rozdel (tj. hodnoty obsahujici prvky
pole $a[2] az a[5]
}
a nemuzu pochopit co se tam vlastne deje co delaji tyto konstrukce.
1. push @{$temp{"seznam_hdd"}},$a[2].":".$a[3].":".$a[4].":".$a[5];
2. foreach $line (@$dskent)
A proc mi nefunguje toto
print \$$temp{"seznam_hdd"};
print \$temp{"seznam_hdd"};
print $pp->{'pokus'};
|
|
|
Re: Perl predavani ref mezi polem
|
18.8.2010 20:28
Hynek (Pichi) Vychodil
|
push @{$temp{"seznam_hdd"}},$a[2].":".$a[3].":".$a[4].":".$a[5];
Vloží do anonymního pole, které je hodnotou klíče "seznam_hdd" hashe $tmp text složený z $a[2].":".$a[3].":".$a[4].":".$a[5]. To znamená, že vznikne něco jako
%tmp = (
seznam_hdd => [ "$a[2]:$a[3]:$a[4]:$a[5]" ]
);
a v každém dalším průchodu tam přibude další záznam. "$a[2]:$a[3]:$a[4]:$a[5]" je alternativní způsob, jak udělat stejné složení textu. Pokud chceš k tomu poli přistupovat, tak je to stejně jako v příkazu push. To znamená, že celý ten tisk
$dskent = $vysledek->{"seznam_hdd"}; # tady je ulozena hodnota napr. ARRAY(0x1911be4). foreach $line (@$dskent) {
print $line;
}
Lze nahradit
print @{$vysledek->{"seznam_hdd"}};
|
|
|
Re: Perl predavani ref mezi polem
|
2.9.2010 10:09
ikar
|
Diky za vysvetleni, tedka to budu muset stravit :)
Ale mam dalsi dotaz.
Mam podle vypisu Dumper toto pole
$VAR1 = {
'list_of_logical_name' => [
'_lv_test22,lv_sk0011',
'_fslv_test,lv_sk9999'
]
};
$VAR2 = {
'list_of_log_logical_name' => [
'_fslv_test,lv_sk0011',
'_fslogvg_test,logvgs01'
]
};
$VAR3 = {
'list_of_filesystem_name' => [
'sdsds_test,new_pprc_test',
'pprc_test,super_pprc_test'
]
};
Jak se dostanu k tem hodnotam napr. _fslogvg_test,logvgs01 ???
Diky |
|
|
Re: Perl predavani ref mezi polem
|
6.9.2010 14:28
Hynek (Pichi) Vychodil
|
$ perl -MData::Dumper -le 'my @a = ({list_of_logical_name => ["_lv_test22,lv_sk0011","_fslv_test,lv_sk9999"]},{list_of_log_logical_name => ["_fslv_test,lv_sk0011","_fslogvg_test,logvgs01"]},{list_of_filesystem_name => ["sdsds_test,new_pprc_test","pprc_test,super_pprc_test"]}); print Dumper(@a); print ">>>>$a[1]{list_of_log_logical_name}[1]<<<<"'
$VAR1 = {
'list_of_logical_name' => [
'_lv_test22,lv_sk0011',
'_fslv_test,lv_sk9999'
]
};
$VAR2 = {
'list_of_log_logical_name' => [
'_fslv_test,lv_sk0011',
'_fslogvg_test,logvgs01'
]
};
$VAR3 = {
'list_of_filesystem_name' => [
'sdsds_test,new_pprc_test',
'pprc_test,super_pprc_test'
]
};
>>>>_fslogvg_test,logvgs01<<<< |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|