Kod:
#!/usr/bin/perl
use Data::Dumper;
my %setNames;
$setNames{SetA}->{name1}='supplier';
$setNames{SetA}->{name2}='supplier';
$setNames{SetB}->{name3}='cokolwiek';
print Dumper \%setNames;
Modul Data:
umper jest Twoim przyjacielem... pokazuje co i jak
Ten samo kod mozna napisac inaczej:
Kod:
#!/usr/bin/perl
use Data::Dumper;
my %SetA = ('name1'=>'supplier', 'name2'=>supplier');
my %SetB = ('name3'=>'cokolwiek');
my %setNames = ('SetA' => \%SetA, 'SetB' => \%SetB);
print Dumper \%setNames;
w ten sposob zagniezdzilem hash'e w hashu... obie wersje sa poprawne i daja ten sam efekt... a znak -> to dereferencja - musisz nieco doczytac...
Wynik pracy programu jest:
Kod:
$VAR1 = {
'SetB' => {
'name3' => 'cokolwiek'
},
'SetA' => {
'name2' => 'supplier',
'name1' => 'supplier'
}
};
... wiec widac zagniezdzenie i dokladnie co jest czym, widac ze to hash hashy itd.
Sortowanie mozna teraz zrobic tak:
Kod:
foreach my $setname (sort keys %setNames) {
my %dataset = %{$setNames{$setname}});
foreach my $name (sort keys %dataset) {
print "$name $setname $dataset{$name}\n";
}
}
oczywiscie print() mozna zastapic write() uzywajac formatow i albo zmienic lekko opis formatu aby uzywalo pol jak wyzej albo zmienic nazwy zmiennych aby pasowaly do tego co juz masz.