如何在命令行上将值传递给Perl子例程参数?
我的test.pl脚本如下。如何在命令行上将值传递给Perl子例程参数?
#!C:\Perl\bin\perl.exe
use strict;
use warnings;
sub printargs
{
print "@_\n";
}
&printargs("hello", "world"); # Example prints "hello world"
如果我用print($a, $b);
代替printargs("hello", "world");
。
如何通过 '你好', '世界' 到$ A,$ B,当我在命令行中运行perl的test.pl世界你好,谢谢。
$ ARGV [0]包含第一个参数,$ ARGV [1]包含第二个参数,等等
$#ARGV是@ARGV阵列的最后一个元素的下标,所以数量在命令行上的参数是$#ARGV + 1.
您也可以使用@ARGV来获取元素的数量。 例如:if(@ARGV \ n”; } – user198470 2010-02-11 12:01:23
您想访问Perl中的“命令行参数”。
基本上,Perl会将实际脚本名称后面传递的字符串看作名为@ARGV的数组。
这里是一个简短的教程:http://devdaily.com/perl/edu/qanda/plqa00001.shtml
不仅仅是谷歌“perl的命令行参数”为多。
命令行参数位于@ARGV
数组中。只是传递给你的函数:
&print(@ARGV);
可能是最好的避免像print
一个名字 - 可能会混淆名称相同的内置功能。
谢谢。修改*打印*到* printargs * – 2010-02-11 08:18:59
这将从命令行参数中打印出“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);
您应该明智地省略'&&从'&printargs(...)'。你不需要它,并且使用'&'前缀子调用可能会产生你可能不期待的副作用。 – 2010-02-11 09:09:36