删除Perl中的部分字符串

时间:2011-07-28 17:51:55

标签: perl

my $input1 = "hours";
my $input2 = "Total hours";
my ($matching_key) = grep { /$input2/ } $input1;
print "Matching key :: $matching_key";

我想要的是从$ input2中删除“Total”并将其分配回input2,这样我的grep行就会匹配。我该如何删除这个词?

4 个答案:

答案 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;