Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10865[/thread]

@h{qw'a b c'} better written as $h{qw'a b c'}



<< >> 3 Einträge, 1 Seite
Gast Gast
 2007-11-22 18:13
#102810 #102810
Hallo @all,

wie im Betreff angegeben bekomme ich bei einer folgenden Zuweisung immer die Warnung 'Scalar value ... better written as ...'.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings 'all';

# hash definieren
my %h = (
a => 1,
b => 2,
c => 3,
);

# und hier die zuweisung, die die Warnung erzeugt
my( $a, $b, $c ) = @h{qw'a b c'};

Nun kann ich mir nicht erklären wieso.
Denn es ist nunmal kein 'Scalar value' sondern ein Hashslice mit mehreren Elementen.

Schreibt man auf der rechten Seite der Zuweisung folgendes: @h{'a', 'b', 'c'} bekommt man keine Warnung...

Ist das ein Fehler von warnings, oder von mir?
Falls es ein Fehler von warnings ist, wie kann ich ihn abschalten ohne gleich alle warnings abzuschalten?

MfG Horst
pq
 2007-11-22 18:39
#102813 #102813
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
versuch mal qw/ a b c /
die anführungszeichen sind wohl das problem. die finde ich sowieso etwas merkwürdig
als delimiter für qw(), da ja '' für einen string steht.
trotzdem ist die warnung hier wohl ein bug.
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
Gast Gast
 2007-11-22 18:51
#102816 #102816
Danke, das wars!

Schade das es nicht auch mit Anführungszeichen geht, die finde ich bei so einer kurzen qw() schöner.

MfG Horst
<< >> 3 Einträge, 1 Seite



View all threads created 2007-11-22 18:13.