ugrás a tartalomhoz

Perl rendezés probléma

Anonymous · 2006. Júl. 12. (Sze), 11.29
Szerintem valahogy így fogja rendezetten kiírni a tömb elemeit. Csak azt nem értem, miért írja ki a 0-át is?
@tomb=(4,7,2,8,2,4,7,9);
rendez(@tomb);
print "A tömb elemei: ".join(',',@tomb)."\n";

sub rendez
  {
  @tomb= sort( (lc($a) cmp lc($b)), @_);
  };
 
1

Sort

Bártházi András · 2006. Júl. 12. (Sze), 11.56
Több hiba is volt (tömb visszaadása, sort függvény pontos paraméterezése), így jó lehet:
@tomb=(4,7,2,8,2,4,7,9);
@tomb=rendez(@tomb);
print "A tömb elemei: ".join(',',@tomb)."\n";

sub rendez
  {
  return sort {lc($a) cmp lc($b)} @_;
  }
Azért kaptál nullát, mert a sortnak nem egy függvényt, hanem egy értéket pakoltál be első elemnek (továbbá vesszőt sem kell használni), és ez 0 volt.

Egyébként nem is rendez jól, mivel ha valóban számokat szeretnél rendezni, akkor nem a cmp-t, hanem a <=>-t kell összehasonlításra használni:
@tomb=(4,7,2,8,2,4,7,9);
@tomb=rendez(@tomb);
print "A tömb elemei: ".join(',',@tomb)."\n";

sub rendez
  {
  return sort {lc($a) <=> lc($b)} @_;
  }
Szóval valószínűleg így működik szándékaid szerint.