2011-07-28 22 views
1
my $input1 = "hours"; 
my $input2 = "Total hours"; 
my ($matching_key) = grep { /$input2/ } $input1; 
print "Matching key :: $matching_key"; 

我想要从$ input2中去掉“Total”并将其赋值给input2,这样我的grep行就会匹配。我如何去除这个词?在Perl中删除字符串的一部分

+0

我认为最好用_capture_而不是'grep'来完成。 –

回答

2

我不知道,我完全理解你的问题,反正你可以去除总这样的:

$input2 =~ s/Total //; 

在此之后$输入2的值将"hours"

我不明白充分“分配回INPUT2所以我的grep线将匹配”的一部分......

0

像这样

my $input1 = "hours"; 
my $input2 = "Total hours"; 
$input2 =~ m/($input1)/; 
print "Matching key : $1\n"; 
1

我不知道到底是什么你”再询问,但如果你想$input2是 '总',尝试

$input2 =~ s/ hours//; 

$input2 = substr $input2, 0, 5; 

同样,如果你想$input2是 '小时',尝试

$input2 =~ s/Total //; 

$input2 = substr $input2, 6; 
9

如果我正确理解你的问题,你想

$input2 =~ s/Total //; 

然而,你也在使用grep();它返回第二个参数中的元素数组(它也应该是一个列表),它们与第一个参数中给出的模式相匹配。虽然它实际上会返回标量上下文中的“小时”,但它们是您使用它的方式,这非常巧合。

+0

抱歉不清楚。基本上作为用户,我会输入“小时”。登录到计算机并获取信息后,我分配$ input2。 $ input2将总是有“总小时数”,但我不希望用户输入为“总小时数”,而只是几小时。因此,我想删除“Total”,所以$ input2将匹配$ input1。 – user238021

相关问题