perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 37
Click for quality!




10.02.2012 / 10:00

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragWer 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

Beitragre: 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

Beitragre: 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

Beitragre: Wer kann mir helfen? (sub-Problem)
Seitenanfang
das ist nicht das problem ...

Datum: 19.11.2004-01:18

Beitragre: 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

-






-
-