Schrift
[thread]6635[/thread]

Slice von split ausgeben



<< >> 6 Einträge, 1 Seite
Cremator
 2005-01-18 19:22
#50833 #50833
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Kann mir das jemand erklaeren?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
# geht:
$x = 'a-b-c';
$y = (split /-/, $x)[1];
print $y;

# geht nicht mehr:
$x = 'a-b-c';
print (split /-/, $x)[1];

# geht wieder:
$x = 'a-b-c';
print ((split /-/, $x)[1]);

Wird die linke Klammer vom print einkassiert oder was geht da? Und wenn ja warum?
betterworld
 2005-01-18 19:43
#50834 #50834
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Das liegt daran, dass Listenoperatoren wie print immer nachstehende Klammern zugeordnet werden. Dein zweites Beispiel ist also aequivalent zu
Code: (dl )
(print split //, $x)[1]
Ishka
 2005-01-18 19:44
#50835 #50835
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ja, die linke Klammer wird von primt kassiert. print ist immer sehr Klammergierig.

Und wenn du 'use warnings' verwenden würdest, hätte dich perl darauf hingewiesen (print (...) interpreted as function at ... ist zwar keine berauschende Meldung, aber im Laufe der Zeit weiß man, was damit gemeint ist ;) ).
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Cremator
 2005-01-18 21:24
#50836 #50836
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Ja die Fehlermeldung hatte ich gesehen. Ich konnte nur nichts damit anfangen, hatte sie vorher noch nie gesehen und dann angefangen rumzuinterpretieren, daher auch meine Frage nach dem print.

Dankee....
pq
 2005-01-18 21:25
#50837 #50837
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
IMHO schönere lösung: print +(split /-/, $x)[1];
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Cremator
 2005-01-18 22:49
#50838 #50838
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
Ja, das sieht wirklich besser aus. Ich danke untertaenigst. :)
<< >> 6 Einträge, 1 Seite



View all threads created 2005-01-18 19:22.