我有一个这样的列表:
自行车:儿童 289 自行车:山地自行车 928 自行车:公路自行车 870 露营和户外装备 761 独木舟、皮划艇、划艇 231 登山装备 120 自由重量级和家庭健身房 583 GPS和定位器 104 高尔夫装备 1,223 其他健身器材 668
我只需要跳过数字或空白的行
if (($line =~ /0..9/) || ($line eq "")){}
else{
print $line if $line !~ /[0-9]/ and $line =~ /\S/;
perldoc perlre . 如果你付出一些努力,你会学到更多。
如果你写
while (<>) {
next unless /[^\d,\s]/;
:
}
您的程序将跳过所有仅包含数字、逗号和空格的行。
这个程序显示了这个想法
use strict;
use warnings
while (<DATA>) {
next unless /[^\d,\s]/;
print;
}
__DATA__
Bicycles: Childrens
289
Bicycles: Mountain Bikes
928
Bicycles: Road Bikes
870
Camping & Outdoors Equipment
761
Canoes, Kayaks, Row-Boats
231
Climbing Equipment
120
Freeweights and Home Gyms
583
GPS and Locators
104
Golf Equipment
1,223
Other Fitness Equipment
668
输出
Bicycles: Childrens
Bicycles: Mountain Bikes
Bicycles: Road Bikes
Camping & Outdoors Equipment
Canoes, Kayaks, Row-Boats
Climbing Equipment
Freeweights and Home Gyms
GPS and Locators
Golf Equipment
Other Fitness Equipment
if ($line !~ /^[\d,]*[\n\r]*$/) {
# do something
}
else {
# blank or "digits & comas" only line
}
“空白”是指带有可选行尾的空字符串(以防您不使用chomp
)
下一个 if (!$line || $line != int($line));
第一个是空白值检查,第二个是检查该值是否为整数。