Guten Abend,
ich habe hier ein kleines Perlproblem, zumindest denke ich das.
Das ganze fiel mir beim Spielen mit Switch.pm auf.
Folgender Quellcode funktioniert wie er soll:
1 use strict;
2 use warnings;
3 use Switch;
4 my $val = 1;
5 sub testsub {
6 my $thisval = shift;
7 switch ($thisval) {
8 case 1 { print "number 1" }
9 case "a" { print "string a" }
10 case [1..10,42] { print "number in list" }
11 else { print "previous case not true" }
12 }
13 }
14 testsub($val)
Ändere ich jetzt allerdings die Zeile 5 so,
5 sub testsub($)
das &testsub mit einem Prototyp (wie es sich gehört) definiert ist,
beschwert sich Perl:
Number found where operator expected at test.pl line 11, near "case 1"
(Do you need to predeclare case?)
String found where operator expected at test.pl line 12, near "case "a""
(Do you need to predeclare case?)
syntax error at test.pl line 10, near ") {"
syntax error at test.pl line 12, near "case "a""
Execution of test.pl aborted due to compilation errors.
255
Wobei hier das $-Zeichen das Problem zu sein scheint, nehme ich ein @,
funktioniert es.
Kann mir das jemand erklären, habe ich Perl verlernt, oder ist es etwa
kaputt?
P.S.: Getestet auf
perl, v5.8.8
perl, v5.8.5
Viele Grüße!
Marcus