удалить часть строки в Perl - PullRequest
3 голосов
/ 28 июля 2011
my $input1 = "hours";
my $input2 = "Total hours";
my ($matching_key) = grep { /$input2/ } $input1;
print "Matching key :: $matching_key";

Я хочу убрать «Total» из $ input2 и присвоить его обратно input2, чтобы моя строка grep соответствовала.как я могу лишить это слово?

Ответы [ 4 ]

10 голосов
/ 28 июля 2011

Если я правильно понимаю ваш вопрос, вы хотите

$input2 =~ s/Total //;

Однако вы также неправильно используете grep();он возвращает массив элементов во втором параметре (который также должен быть списком), которые соответствуют шаблону, указанному в первом параметре.Хотя на самом деле он будет возвращать «часы» в скалярном контексте так, как вы его используете, это в значительной степени совпадение.

3 голосов
/ 28 июля 2011

Я не уверен, что полностью понимаю ваш вопрос, в любом случае вы можете лишить Total всего этого:

$input2 =~ s/Total //;

после этого $ input2 будет иметь значение "hours".

Я не до конца понимаю часть "назначить ее обратно для input2, чтобы моя строка grep соответствовала" ...

1 голос
/ 28 июля 2011

Я не совсем уверен, что именно вы спрашиваете, но если вы хотите, чтобы $input2 было 'Всего', попробуйте

$input2 =~ s/ hours//;

или

$input2 = substr $input2, 0, 5;

Аналогично,если вы хотите, чтобы $input2 было 'часами', попробуйте

$input2 =~ s/Total //;

или

$input2 = substr $input2, 6;
1 голос
/ 28 июля 2011

Вроде так

my $input1 = "hours"; 
my $input2 = "Total hours";
$input2 =~ m/($input1)/;
print "Matching key : $1\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...