Değerleri kabuktan Perl'deki foreach işlevine (betiği çağırırken) geçirmeye çalışıyorum.Perl'de @ARGS foreach'a (@ARGS) kısa yoldan geçmek
[email protected]:$ perl perl_script @ARGS
Motivasyon: 50 anahtarın bir listesini hazırladım. 192.168.10.10 - 192.168.10.60 ve tüm işlemlerin gerçekleştirilmesi. bu yüzden kısa yoldan geçmeye çalışıyorum.
#!/usr/bin/perl
my $t_args = $#ARGV+1;
print "Total args: $t_args\n";
print "[$_]\n" foreach @ARGV;
Çıktı 1:
[email protected]:~/projects/learnperl$ perl counter.pl 12 13 14 15 16
Total args: 5
[12]
[13]
[14]
[15]
[16]
Çıktı 2: HATA
[email protected]:~/projects/learnperl$ perl counter.pl 12..16
Total args: 1
[12..16]
Orada içinden almak için başka yollar vardır, ancak ben başarmak için çalışıyorum bilmek istiyorum mümkün.
Örnek kullanım:
[email protected]:$ perl getlogs.pl 10..60
my $network="192.168.0"
foreach my $node (@ARGS){
my $ip="$network.$node";
get_files_from ($ip);
}
Hepsi benim cihazlardan veri almak gerekir. foreach my $node (10..60)
yapmak anlaşılabilir. Ama ben foreach my $node (@ARGS)
kullanmak istiyorum.
Eğer 192.168.10.10 den 192.168.10.60 IP adreslerini oluşturmak için nasıl soruyorsun Kabuğunda mı? Eğer öyleyse, hangi kabuğun kullanıldığını bilmek zorundayız. Tabii ki, [bunu Perl ile de yapabilirsiniz] (http://stackoverflow.com/questions/2279756/how-can-i-generate-a-range-of-ip-addresses-in-perl). – ThisSuitIsBlackNot
Hayır .. Bunu sormuyorum. Kabuk (bash) kullanarak ayrı bir @ARGS olarak 12..16'yı nasıl geçebileceğimi bilmek istiyorum ve Perl bunu '12 13 14 15 16'ya genişletmeli ve 1 argüman olarak yorumlanmamalıdır' 12..16' . – Moni