0

次の perl スクリプトでは、

#!/usr/local/bin/perl
use Env;
use strict;
use warnings;
my $oscar_file = "input/oscar_single_piminus_1k.input";
my $PISAEvent_file  = "output/PISAEvent_piminus_1k.root";
my %pisa_input = "pisa_piminus_1k.input" ;
my %pisa_start = "pisa < pisa_piminus_1k.input";
my $nevents = 1000;
open(INPUT, ">" . $pisa_input);
print INPUT "0\nN\n0\n";
close(INPUT);
open(INPUT2,">glogon.kmac");
print INPUT2 "macro glogon.kumac\npisafile $PISAEvent_file\ntext_file $oscar_file -1 1\nptrig $nevents\nexit\nreturn\n";
close(INPUT2);
my $ret = system($pisa_start);

次のエラーが返されます。

Global symbol "$pisa_input" requires explicit package name at pisa.pl line 26.
Global symbol "$pisa_start" requires explicit package name at pisa.pl line 32.
Execution of pisa.pl aborted due to compilation errors.

「use strict」をコメントアウトしても役に立ちません。

Name "main::pisa_input" used only once: possible typo at pisa.pl line 26.
Name "main::pisa_start" used only once: possible typo at pisa.pl line 32.
Odd number of elements in hash assignment at pisa.pl line 15.
Odd number of elements in hash assignment at pisa.pl line 20.
Use of uninitialized value in concatenation (.) or string at pisa.pl line 26.
print() on closed filehandle INPUT at pisa.pl line 27.
Use of uninitialized value in system at pisa.pl line 32.

何が起こっている?

4

2 に答える 2

5

my %pisa_start = "pisa < pisa_piminus_1k.input";

my $ret = system($pisa_start);

%v. $.

これらは、互いに一致しない、使用した 2 つの行です。それでも問題がないと思われる場合は、お気に入りの変数に関する Perl チュートリアルを読んでください。

于 2012-05-29T20:31:18.260 に答える
3

$pisa_inputどこにも宣言しておらず、同じ名前のハッシュマップを使用しています ( %pisa_input)。

あなたはおそらく次のことを意味していました:

my $pisa_input = "pisa_piminus_1k.input" ;
my $pisa_start = "pisa < pisa_piminus_1k.input";
于 2012-05-29T20:33:31.253 に答える