Thread Perlbug: Live vom Perl Community Treffen ! (8 answers)
Opened by J-jayz-Z at 2005-09-11 04:00

J-jayz-Z
 2005-09-11 04:00
#57818 #57818
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich dachte, ich hab hier nur einen kleinen Newbie Fehler bei mir, allerdings hab ich doch etwas "komischeres" entdeckt. Und zwar bekomm ich bei folgendem Code ein sehr komisches Verhalten:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl 
use strict;
use warnings;

my %test = (
eins => ['Hallo', 'Perl', 'Community'],
zwei => ['Hallo', 'Programmierer']
);


map { print $_ . "\n" for(@{ $test{$_} }) } (keys %test);

print "-" x15;
print "\n";

map {
for(@{ $test{$_} }) {
print $_ . "\n";
}
} (keys %test);

Das ist fast der selbe Code. Allerdings bekomm ich mit perl -NO=Deparse script.pl folgende Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use warnings;
use strict 'refs';
my(%test) = ('eins', ['Hallo', 'Perl', 'Community'], 'zwei', ['Hallo', 'Programmierer']);
map {foreach $_ (@{$test{$_};}) {
print $_ . "\n";
}} keys %test;
print '-' x 15;
print "\n";
map {foreach $_ (@{$test{$_};}) {
print $_ . "\n";
}} keys %test;
array_hash.pl syntax OK

wie hier zu sehen ist, nimmt er den selben Code intern.
Nun noch die Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
Hallo
Perl
Community
---------------
Hallo
Perl
Community
Hallo
Programmierer

Und meine Version ist
Code: (dl )
1
2
3
4
5
ingo perl # perl -v

This is perl, v5.8.4 built for i386-linux-thread-multi

Copyright 1987-2004, Larry Wall

Wie sieht es aus, mit Erklärungen, Reaktionen oder Meinungen?
Danke im Vorraus

Ingo

P.S.: Der Spruch des Tages:
Quote
User1: Wie war das mit der do while Schleife?
User2: Das ist ja gar keine wirkliche Schleife, oder?
User3: (schreit noch vom Klo) Richtig !
User3: (kommt total aufgeregt und mit heruntergelassener Hose vom Klo) Ja, das sind keine richtige Schleifen. Redo geht beispielsweise nicht damit.
\n\n

<!--EDIT|J-jayz-Z|1126403364-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de

View full thread Perlbug: Live vom Perl Community Treffen !