SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] [Newbie] To spørgsmål.



Thomas Kammer Have wrote:

> Halløj.
>
> Jeg er rimeligt grøn i perl:
>
> 1) Jeg vil gerne sortere en hash efter values. Det kan man jo ikke så jeg
> har tænkt mig at bruge en array[i]=key og så sortere arrayen så hash{key}
> er voksende for i voksende (er det helt sort?:) Derfor vil jeg gerne lave
> en sub-routine der kan tage en hash og en array som argument. Men alt
> synes at blive klappet sammen i @_ så hvordan gøres det?

sådan her f.eks.

sub foo(sslug@sslug){
    my $arrayref = shift;
    my $hashref = shift;
    print "Array:\n";
    for($i = 0; $i < @$arrayref; $i++){
        print "$i => $$arrayref[$i]\n";
    }
    print "Hash:\n";
    foreach $key (keys %$hashref){
        print "$key => $$hashref{$key}\n";
    }
}

@b = qw(a b c);
%c = (a => 1, b => 2, c => 3);

foo(@b, %c);
# end script

Output af script:
Array:
0 => a
1 => b
2 => c
Hash:
a => 1
b => 2
c => 3


> Eller er der en
> smartere måde at 'sortere' hashen.

Peters metode er den gængse hvis man vil tilgå nøglerne i en eller anden
speciel rækkefølge. Vil du tilgå værdierne i en bestemt rækkefølge, så kan
du gøre sådan her:

foreach $key (sort {$h{$a} <=> $h{$b}} keys %h) {
    print "$key => $c{$key}\n";
# eller push @array, $h{$key} som vist nok var det du ville
}



> 2) Jeg vil gerne lave et regexp der matcher en eller flere spaces, men
> ikke hvis den/de optræder imellem to anførselstegn af typen ". Hvordan
> kan det gøres?

Det er svært, hvor meget af strengen '"     "      "    "' skal f.eks.
matches?
Vi kommer nok ikke uden at der skal lidt mere end en enkelt regex til.

Mvh. Christian Hemmingsen



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:53
Denne side vedligeholdes af MHonArc .