Thread Perl bug in 5.10.0 (4 answers)
Opened by sid burn at 2009-06-15 12:03

sid burn
 2009-06-15 12:03
#122494 #122494
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ein Bug auf den ich gerade in Perl 5.10.0 gestoßen bin.

Folgender Schnipsel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env perl
# Core Modules
use strict;
use warnings;

open my $fh, '<', 'datei_die_nicht_existiert' or do {
    require Carp;
    Carp::confess "asd";
};
close $fh;


Unter Perl 5.8.8
Code: (dl )
1
2
3
4
sidburn@vs166101:~$ perl -V | grep "revision"
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
sidburn@vs166101:~$ ./require.pl
asd at ./require.pl line 8


Unter Perl 5.10.0
Code: (dl )
1
2
3
4
5
6
7
sidburn@sid:~/perl$ perl -V | grep "revision"
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
sidburn@sid:~/perl$ ./require.pl
String found where operator expected at ./require.pl line 8, near "Carp::confess "asd""
(Do you need to predeclare Carp::confess?)
syntax error at ./require.pl line 8, near "Carp::confess "asd""
Execution of ./require.pl aborted due to compilation errors.


Um diesen Bug zu umgehen reicht es unter Perl 5.10.0 runde klammern hinzuzufügen. also ein
Code: (dl )
Carp::confess("asd")

zu machen. Ich habe es mal als Perl Bug gemeldet. Da ich aber schon angefangen hatte hier was zu schreiben schreibe ich es ja hier auchnoch hin. Vielleicht stößt ja sonst noch jemand auf das Problem und man weiß dann woran es liegt.

EDIT:
Und soweit wie ich das sehe ist es grundsätzlich so dass wenn man ein Module mit require() lädt man die Klammern nicht weg lassen kann.
Last edited: 2009-06-15 12:05:42 +0200 (CEST)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Perl bug in 5.10.0