1

我的test.pl脚本如下。

#!C:\Perl\bin\perl.exe
use strict;
use warnings;


sub printargs
{
    print "@_\n";
}

&printargs("hello", "world"); # Example prints "hello world"

如果我替换printargs("hello", "world");print($a, $b);.

当我在命令行运行perl test.pl hello world时,如何将 'hello' ,'world' 传递给 $a , $b ,谢谢。

4

6 回答 6

4

请阅读perldoc perlvar@ARGV

于 2010-02-11T11:46:40.017 回答
3

$ARGV[0] 包含第一个参数,$ARGV[1] 包含第二个参数,以此类推。

$#ARGV 是@ARGV 数组最后一个元素的下标,所以命令行上的参数个数是 $#ARGV + 1。

于 2010-02-11T08:11:39.043 回答
3

命令行参数在@ARGV数组中。只需将其传递给您的函数:

&print( @ARGV );

最好避免使用类似的名称print- 可能会与同名的内置函数混淆。

于 2010-02-11T08:14:03.127 回答
1

您想在 Perl 中访问“命令行参数”。

基本上,Perl 将您在实际脚本名称之后传递的字符串视为名为 @ARGV 的数组。

这是一个简短的教程:http ://devdaily.com/perl/edu/qanda/plqa00001.shtml

只需谷歌“perl 命令行参数”了解更多信息。

于 2010-02-11T08:13:37.767 回答
0

这也会从命令行参数打印“hello world”,同时根据要求将数据传递给 $a 和 $b。

#!/usr/bin/perl -w

use warnings;
use strict;

sub printargs($$)
{
    print $_[0] . " " . $_[1] . "\n";
}

my($a,$b) = ($ARGV[0],$ARGV[1]);
printargs($a,$b);
于 2010-02-11T12:08:22.460 回答
0

基本上,正如其他人所说,@ARGV 列表是您问题的答案。

现在,如果您想更进一步并为您的程序定义命令行选项,您还应该查看getargs。

于 2010-02-11T08:21:22.087 回答