下記のような配列内定義サブルーチン呼び出しを作成し動作を確認しました。
次にソース2行目の「no strict;」を「use script;」に変更すると
Bareword "sub1" not allowed while "strict subs" in use at refsub_OK.pl line 4.
Bareword "sub2" not allowed while "strict subs" in use at refsub_OK.pl line 4.
Bareword "sub3" not allowed while "strict subs" in use at refsub_OK.pl line 4.
Execution of refsub_OK.pl aborted due to compilation errors.
とエラーになります。
プログラムはやはり「use script;」を記述したいのですが、「use script;」を記述
したままでエラーにならない方法がありましたらおしえてください。
perlのバージョンは5.12.3、OSはWindowsXP SP3です。
よろしくお願いします。
---ソースここから---
#!perl
no strict;
use warnings;
my @ary = (
("input1.txt", "save1.txt", sub1),
("input2.txt", "save2.txt", sub2),
("input3.txt", "save3.txt", sub3),
);
while (@ary) {
my $p1 = shift(@ary);
my $p2 = shift(@ary);
my $sub = shift(@ary);
print "p1=[$p1] p2=[$p2] sub=[$sub]\n";
&$sub("$p1", "$p2");
}
sub sub1 {
my ($p1, $p2) = @_;
print "sub1: [$p1] [$p2]\n";
}
sub sub2 {
my ($p1, $p2) = @_;
print "sub2: [$p1] [$p2]\n";
}
sub sub3 {
my ($p1, $p2) = @_;
print "sub3: [$p1] [$p2]\n";
}
---ソースここまで---
お礼
use strict; ・・・ my @ary = ( ("input1.txt", "save1.txt", \&sub1), ("input2.txt", "save2.txt", \&sub2), ("input3.txt", "save3.txt", \&sub3), ); としてうまくいきました。 本当にありがとうございます。