[Vienna-pm] or oder || ?

Thomas Klausner domm at cpan.org
Sat Jul 7 02:53:14 PDT 2007


Hi!

On Sat, Jul 07, 2007 at 11:40:27AM +0200, gooly at gmx.at wrote:
 
> In den Tutorials zu Perl wird bei open das 'or' oder das '||' ohne 
> erkennbaren Unterschied gehandhabt:

was IMO daemlich ist...

> (aus Perl/Doc/functions/open.html):
> 	   open(TMP, "+>", undef) or die ...
> und gleich danach
> 	  open($fh, '>', \$variable) || ..
> 
> Bei mir ist aber nun folgendes zu beobachten:
> 	$falsch  = "/homme/../$file";
> jetzt ein 
> 	open F, "> $falsch" || die "$!\n";
> geht anstandslos durch bis ich dann (zB n?chste Zeile) 
> auf F schreiben will:
> 	print() on closed filehandle ...
> 
> aber ein
> 	open F, "> $falsch" or die "$!\n";
> stirbt mit : 'Datei oder Verzeichnis nicht gefunden'
> 
> Warum das? Das bei open? Beide binden links, warum der Unterschied?

Die Klammern sind der Untschied.

open FH,"file" || die $!;    ==   open FH, ("file" or die $!);

Meister Conway sagt zwar (Perl Best Practices, p207):
  open my $FH, '>', $file or die $!;

Ich ziehe aber explizite Klammern und || vor:
  open (my $FH, '>', $file) || die $!;



-- 
#!/usr/bin/perl                              http://domm.plix.at
for(ref bless{},just'another'perl'hacker){s-:+-$"-g&&print$_.$/}


More information about the Vienna-pm mailing list