LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Komentarze :: Poradna Perl predavani ref mezi polem

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
Perl predavani ref mezi polem 18.8.2010 16:41 ikar
  L Re: Perl predavani ref mezi polem 18.8.2010 20:28 Hynek (Pichi) Vychodil
    L Re: Perl predavani ref mezi polem 2.9.2010 10:09 ikar
      L Re: Perl predavani ref mezi polem 6.9.2010 14:28 Hynek (Pichi) Vychodil
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4791x
2. FreeBSD
Download: 8984x
3. PCLinuxOS-2010
Download: 8488x
4. alcolix
Download: 10804x
5. Onebase Linux
Download: 9568x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6143x

1. xinetd
Download: 2331x
2. RDGS
Download: 937x
3. spkg
Download: 4549x
4. LinPacker
Download: 9802x
5. VFU File Manager
Download: 3116x
6. LeftHand Mała Księgowość
Download: 7002x
7. MISU pyFotoResize
Download: 2700x
8. Lefthand CRM
Download: 3486x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3002x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz