|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Wer kann mir helfen? (sub-Problem)
|
Seitenanfang |
Hi Leute ich hab wiedermal ein Problem. Ich bin mit Perl noch ziemlich am Anfang, deshalb hab ich noch soo viele Fragen... Also: Das 1. $x ist ja noch klar (1 2 3 4 5) Aber dann: Warum steht in @ary 2 4 6 8 10 usw Kann mir das jemand genauer erklären Wär echt dankbar.
#!/usr/bin/perl -w $a = 2; @x = (1..5); @y = scale_ary1($a, @x); print "@x \n"; print "@y \n\n"; @y = scale_ary2($a, @x); print "@x \n"; print "@y \n"; sub scale_ary1 { my ($a, $scale, @ary); ($scale, @ary) = @_; #print "\t@ary\n"; foreach $a (@ary) { $a *= $scale; } return @ary; } sub scale_ary2 { my $scale = shift; for (@_) { $_ *= $scale; } return @_; } # 1 2 3 4 5 # 2 4 6 8 10 # 2 4 6 8 10 # 2 4 6 8 10
Datum: 18.11.2004-14:32

|
re: Wer kann mir helfen? (sub-Problem)
|
Seitenanfang |
klar. scale_ary2 arbeitet mit $_, das ist eine spezialvariable, die beim durchlauf eines arrays verwendet wird, und auf das arrayelement zeigt, d.h. wenn du sie veränderst, veränderst du damit auch den array. und dadurch kommen bei scale_ary2 jeweils die modifizierten werte heraus. bei scale_ary1 wird $a benutzt (übrigens schlechter variablenname, da $a und $b auch spezialvars sind, die beim einsatz von sort genutzt werden. macht hier kein problem, das sollte nur nebenbei erwähnt sein :) ), was dann jeweils auf den wert des arrayelements gesetzt wird. das wird verändert, dadurch aber nicht der array.klar soweit?
Datum: 18.11.2004-22:07

|
re: Wer kann mir helfen? (sub-Problem)
|
Seitenanfang |
| Du überschreibst $a in den subs... nimm innerhalb der routinen mal nen anderen variablenamen
Datum: 19.11.2004-00:29

|
re: Wer kann mir helfen? (sub-Problem)
|
Seitenanfang |
| das ist nicht das problem ...
Datum: 19.11.2004-01:18

|
re: Wer kann mir helfen? (sub-Problem)
|
Seitenanfang |
Also noch nicht ganz. Zu scale-ary1: Versteh ich das richtig: $a, $scale, @ary sind alles Variablen, die nur in dieser Funktion auftreten, weil sie mit my deklariert werden, oder? Dann wird $scale mit dem Wert 2 belegt und in @ary steht 12345, oder? Anschließend wird jeder dieser Werte mit 2 multipliziert. Aber warum sthen diese Werte dann in @ary????Dann zu scale_ary2: $scale ist hier eine andere Variable als in scale_ary1, oder? weil sie ja hier wieder mit my deklariert wird. Oder? Und wie wird dieser wert dann geshiftet, es steht doch nix drinnen,oder? Und warum wird im zweiten @x (unter @y = scale_ary2) zu 2 4 6 8 10. Das wären die Fragen. Danke Fraser
Datum: 19.11.2004-08:46

|
|

|

|

|
 |

|

|
|