my $input1 = "hours";
my $input2 = "Total hours";
my ($matching_key) = grep { /$input2/ } $input1;
print "Matching key :: $matching_key";
我想要的是从$ input2中删除“Total”并将其分配回input2,这样我的grep行就会匹配。我该如何删除这个词?
答案 0 :(得分:10)
如果我正确理解你的问题,你想要
$input2 =~ s/Total //;
然而,你也在滥用grep()
;它返回第二个参数(也应该是一个列表)中的元素数组,它与第一个参数中给出的模式匹配。虽然它实际上会在标量上下文中返回“小时”,但是你正在使用它,这非常巧合。
答案 1 :(得分:3)
我不确定我完全理解你的问题,无论如何你可以像这样剥离道达尔:
$input2 =~ s/Total //;
之后,$ input2将具有值"hours"
。
我完全不明白“将它分配回input2所以我的grep行将匹配”part ...
答案 2 :(得分:1)
喜欢这样
my $input1 = "hours";
my $input2 = "Total hours";
$input2 =~ m/($input1)/;
print "Matching key : $1\n";
答案 3 :(得分:1)
我不确定您要问的是什么,但如果您希望$input2
为“总计”,请尝试
$input2 =~ s/ hours//;
或
$input2 = substr $input2, 0, 5;
同样,如果您希望$input2
为'小时',请尝试
$input2 =~ s/Total //;
或
$input2 = substr $input2, 6;