perl多线程使用的一个简单例子:同时对多个ip进行ping的命令,检测各个ip地址的响应速度。
#!/usr/bin/perl use strict; # 声明调用的模块 use Thread; my @ips = ("221.141.1.222", "89.46.101.122", "199.200.120.37"); my @threads; # 创建线程并push到数组中。第一个参数是一个子程序的名字,后面的参数是输入到该子程序的数组内容。 foreach (@ips) { push @threads, threads->create(\&ping,$_); } # 子程序join到主线程,取得返回值。 foreach (@threads) { $_->join(); } # 子程序,对ip地址ping5次,得到其平均值。 sub ping { $_ = shift; my $ping_log = `ping -c 5 $_`; my @ping_log = split /\n/, $ping_log; my $time = 0; foreach (@ping_log) { $time += $1 if /time=(.*) ms/; } my $avg_time = $time / 5; $time = "na" if $time == 0; print "$_\t$avg_time\n"; }