1

perlの戻り値をバッチで保存したいのですが。どうすればこれを達成できますか?

Batch Code:
FOR /F "delims=" %%I IN ('perl.exe c:\TestProp1noRefCases.pl 859') DO set lineCase=%%I 
echo !lineCase! ::Nothing is outputted

Perl Code:
use strict;
use warnings;
sub main1;

my $arg1 =shift;
main1($arg1);
exit;
sub main1
{
            #Returns 1,2,3 Depending on testNum passed
            my @gp1= (829,845,851,859,864,867);
            my @gp2= (861,863,865);
            # my @gp4= (826-828,830-839,843-844,847-850,852-854,860-862,883);
    # my @gp3= (877-882,884);
            my $val1=1;
            my $val2=2;
            my $val3=3;
            my $val4=4;

            if((grep /^$arg1$/,@gp1) || ($arg1 >=822 && $arg1<=824))
            {     
                            # print "$val1\n";
                            return $val1;

            } elsif ((grep /^$arg1$/,@gp2) || ($arg1>=855 && $arg1<=858))
            {
            #print "$val2\n";
                            return $val2;
            } elsif (($arg1==884) || ($arg1>=877 && $arg1<=882))
            {
            #print "$val3\n";
                            return $val3;
            } else
            {
                #print "$val4\n";
                            return $val4;

            }

}
4

2 に答える 2

1

戻り値で終了しているわけではありません。

それ以外の

main1($arg1);
exit;

試す:

my $result = main1($arg1);
exit $result;

また:

exit main1($arg1);

%ERRORLEVEL%次に、バッチで調べます。

perl.exe c:\TestProp1noRefCases.pl 859
set lineCase=%ERRORLEVEL%

編集:これは、例のように、小さな符号なし整数に対してのみ機能することに注意$val1..$val4してください。

于 2012-07-05T22:02:39.287 に答える
1

キャプチャする値を実際に印刷することはありません。変化する

main1($arg1);

print main1($arg1);
于 2012-07-06T00:24:06.690 に答える