如何在命令行上将值传递给Perl子例程参数?

时间:2010-02-11 08:10:19

标签: perl parameters subroutine

我的 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,谢谢。

6 个答案:

答案 0 :(得分:4)

请阅读@ARGV中的perldoc perlvar

答案 1 :(得分:3)

$ ARGV [0]包含第一个参数,$ ARGV [1]包含第二个参数,等等。

$#ARGV是@ARGV数组的最后一个元素的下标,因此命令行中的参数数量是$#ARGV + 1.

答案 2 :(得分:3)

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

&print( @ARGV );

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

答案 3 :(得分:1)

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

基本上Perl会将实际脚本名称后面的字符串视为名为@ARGV的数组。

以下是简要教程:http://devdaily.com/perl/edu/qanda/plqa00001.shtml

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

答案 4 :(得分:0)

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

现在,如果你想进一步为你的程序定义命令行选项,你也应该在getargs.

处出现问题。

答案 5 :(得分: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);