我的要求如下:
我正在读取wmic命令的输出,如下所示:
my @pnames = `wmic product where "Name like '%Provider%'" get IdentifyingNumber, Name,Version`;
print "@pnames";
到此为止输出如下:
IdentifyingNumber Name Version
{E094B8EA-87B7-48DE-A0A8-A18AC8BFCDF4} .NET Data Provider for Teradata 14.00.0.0 14.00.0.0
{1551F9D6-1B14-4AE1-BABA-70A4319C236A} ODBC Driver Provider 14.00.0.0
处理数组
foreach $name ( @pnames )
{
chomp($name);
#@names = split('need to pass something',$name);
# I want to split every input entry into 3 parts- IdentifyingNumber, Name,Version similarly the way they read.
$name =~ s/^\s+//; #remove leading spaces
$name =~ s/\s+$//; #remove trailing spaces
# here logic goes this way, If the version number has matched, search for name and if name has matched display its identifying number
print "Identifying number(say $id) of the packge with name(say $pkg)\n";
}
答案 0 :(得分:0)
您可以通过匹配输入行
进行拆分foreach my $line (@pnames) {
my($id, $name, $version) = ($line =~ m/^\s*({.+?})\s+(.+?)\s+([\d.]+)\s*$/);
...
}
这会捕获(...)
这三个部分,并将它们分配给变量$id
,$name
和$version
。