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

open() und die()



<< >> 4 Einträge, 1 Seite
bo
 2006-11-13 14:06
#71706 #71706
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
hi community,

warum bekomme ich hier erst beim lesenden zugriff auf das filehandle eine fehlermeldung (readline() on closed filehandle $fh at test.pl line 5.) und nicht schon beim öffnen der nicht existierenden datei???

dann könnte man sich das die() ja eigentlich auch sparen, oder...?

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

open my $fh, '<', 'gibsnicht.txt' || die $!;
while (<$fh>)
{
print qq($_);
}
close $fh;
renee
 2006-11-13 14:10
#71707 #71707
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hat etwas mit der Wertigkeit des ||-Operators zu tun. Bevor das open gemacht wird, wird erst 'gibsnicht.txt' || die $! gemacht. Da aber 'gibtsnicht.txt' ein wahrer Wert ist, wird das die nie ausgeführt. Ersetz mal die || durch or. Also:
Code: (dl )
1
2
3
4
5
6
7
8
9
use strict;
use warnings;

open my $fh, '<', 'gibsnicht.txt' or die $!;
while (<$fh>)
{
print qq($_);
}
close $fh;


Damit wird erst das open gemacht und dann der or-Vergleich...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bo
 2006-11-13 14:23
#71708 #71708
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
danke, renee...

da muss ich aber dringend meine skripte anpassen ;)

so geht's dann natürlich auch
Code: (dl )
open (my $fh, '<', 'gibsnicht.txt') || die $!;
nepos
 2006-11-13 17:45
#71709 #71709
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was ich persoenlich auch fuer lesbarer halte als die erste Variante ;)
<< >> 4 Einträge, 1 Seite



View all threads created 2006-11-13 14:06.