Schrift
[thread]8757[/thread]

use if: ?

Leser: 2


<< >> 10 Einträge, 1 Seite
vayu
 2007-02-14 13:17
#74317 #74317
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hi,

ich hab vorhin dies hier entdeckt

http://perldoc.perl.org/if.html

das wollte ich jetzt mal ausprobieren:

Code: (dl )
1
2
3
4
5
6
7
8
use strict;
use warnings;

my $debug = 1;
use if $debug, "Data::Dumper";

my $var = "Hallo";
print Dumper \$var;


Quote
Name "main::Dumper" used only once: possible typo at C:/Dokumente und Einstellungen/behe3087/workspace_general/General/hello.pl line 24.
print() on unopened filehandle Dumper at C:/Dokumente und Einstellungen/behe3087/workspace_general/General/hello.pl line 24.


aber wieso? da ich keine Argumente für das Modul habe, quote ich selber, wie es in perldoc steht.

was mache ich falsch?


edit:

das funktioniert:

Code: (dl )
1
2
3
4
5
6
7
use strict;
use warnings;

use if 1, "Data::Dumper";

my $var = "Hallo";
print Dumper \$var;


wieso funzt das mit ner variablen nicht?\n\n

<!--EDIT|vayu|1171452005-->
nepos
 2007-02-14 13:30
#74318 #74318
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich würde mal sagen, weil deine Zuweisung an $debug erst nach dem ausführen von use erfolgt?
vayu
 2007-02-14 13:31
#74319 #74319
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
muss ich $debug dann zB in dem BEGIN Block zuweisen?
bloonix
 2007-02-14 13:37
#74320 #74320
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;

BEGIN {
  $main::debug = defined $ARGV[0] ? $ARGV[0] : 0;
}

use if $main::debug, "Data::Dumper";

my $ref = {foo=>'bar'};

print Dumper($ref)
  if $main::debug;


#> ./test.pl 1
$VAR1 = {
         'foo' => 'bar'
       };


Eine weitere Lösung wäre noch require.\n\n

<!--EDIT|opi|1171453248-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
vayu
 2007-02-14 13:40
#74321 #74321
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use strict;
use warnings;

my $debug;

BEGIN {
$debug = 0;
}

use if $debug, "Data::Dumper";

my $var = "Hallo";

if($debug) {
no warnings;
print Dumper \$var;
} else {
print $var;
}


wenn ich das no warnings hier nicht setze schmeisst mir perl ne warning,
Dumper used only once ...
bloonix
 2007-02-14 13:57
#74322 #74322
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=vayu,14.02.2007, 12:40]
Code: (dl )
1
2
3
4
5
6
if($debug) {
  no warnings;
  print Dumper \$var;
} else {
  print $var;
}


wenn ich das no warnings hier nicht setze schmeisst mir perl ne warning,
Dumper used only once ...[/quote]
mit

Code: (dl )
1
2
3
4
5
f($debug) {
  print Dumper(\$var);
} else {
  print $var;
}


erscheint die Meldung nicht mehr. "used only once" kommt an dieser
Stelle, weil die Routine Dumper zunächst für ein globales Filehandle
gehalten wird, welches nur einmal im Skript vorkommt, also weder
deklariert noch mit open() geöffnet wurde. Schätze ich mal...\n\n

<!--EDIT|opi|1171454604-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
vayu
 2007-02-14 14:12
#74323 #74323
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
ah guter tipp, danke!
bloonix
 2007-02-14 14:31
#74324 #74324
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=opi,14.02.2007, 12:57]weil die Routine Dumper zunächst für ein globales Filehandle
gehalten wird[/quote]
Oder aber eine globale Variable oder ...
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
vayu
 2007-02-14 14:35
#74325 #74325
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
hast ja recht :) hast ja recht. bissl nachdenken schadet auch mir manchmal nicht -.-
bloonix
 2007-02-14 17:07
#74326 #74326
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=vayu,14.02.2007, 13:35]hast ja recht :) hast ja recht. bissl nachdenken schadet auch mir manchmal nicht -.-[/quote]
ai wo... schon okay... hab dir ja keine Doku auf den Hals gedrückt :)

hab statt dessen selbst gesucht, weil mir die Warnung auch bislang nicht
untergekommen ist\n\n

<!--EDIT|opi|1171481667-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< >> 10 Einträge, 1 Seite



View all threads created 2007-02-14 13:17.