我試圖從shell(在調用腳本時)將值傳遞給foreach中的perach函數。通過@ARGS作爲foreach(@ARGS)在Perl中的簡寫
[email protected]:$ perl perl_script @ARGS
動機:我列出了50個開關。 192.168.10.10至192.168.10.60並且已經對所有人執行了一些操作。所以試圖通過它作爲一個速記。
#!/usr/bin/perl
my $t_args = $#ARGV+1;
print "Total args: $t_args\n";
print "[$_]\n" foreach @ARGV;
輸出1:
[email protected]:~/projects/learnperl$ perl counter.pl 12 13 14 15 16
Total args: 5
[12]
[13]
[14]
[15]
[16]
輸出2:ERROR
[email protected]:~/projects/learnperl$ perl counter.pl 12..16
Total args: 1
[12..16]
還有其他的方法,通過它來獲取,但我想知道如果我想要實現是可能的。
用法示例:
[email protected]:$ perl getlogs.pl 10..60
my $network="192.168.0"
foreach my $node (@ARGS){
my $ip="$network.$node";
get_files_from ($ip);
}
這應該從我的所有設備上的數據。 做foreach my $node (10..60)
是可以理解的。但我想用foreach my $node (@ARGS)
。
所以你問如何生成的IP地址192.168.10.10從向192.168.10.60在你的shell?如果是這樣,我們必須知道你正在使用哪個外殼。當然,[你也可以用Perl來做到這一點](http://stackoverflow.com/questions/2279756/how-can-i-generate-a-range-of-ip-addresses-in-perl)。 – ThisSuitIsBlackNot
不,我不是這樣問的。我想知道如何通過使用shell(bash)將'12..16'作爲單獨的@ARGS傳遞,並且Perl應該將其擴展爲'12 13 14 15 16',而不是將其解釋爲1參數,即'12..16' 。 – Moni