Я хочу удалить слова Z или ZN и LVT из строк, присутствующих в моем файле, но я не смог его получить. Может кто-то проверить мой код.Удалить соответствующие слова из строки с помощью Perl
Входной
abchsfk/jshflka/ZN (cellLVT)
asjkfsa/sfklfkshfsf/Z (mobLVT)
asjhfdjkfd/sjfdskjfhdk/hsakfshf/Z (celLVT)
asjhdjs/jhskjds/ZN (abcLVT)
shdsjk/jhskd/ZN (xyzLVT)
Выход
abchsfk/jshflka cell
asjkfsa/sfklfkshfsf mob
asjhfdjkfd/sjfdskjfhdk/hsakfshf cel
asjhdjs/jhskjds abc
shdsjk/jhskd xyz
КОД:
if ($line =~ /LVT/ && ($line =~ /ZN/ || $line =~ /Z/))
#### matches the words LVT and (Z or ZN)
{
my @names = split//, $line; ##### splits the line
$names[2] =~ s/\/Z|/ZN//g; #### remove Z or ZN
$names[3] =~ s/\(|LVT\)//g ; #### remove LVT & braces
print OUT " $names[2] $names[3] \n"; #### print
}
Почему не просто '$ строки = ~ с/\/ZN | LVT // г;' – sln
@sln?. Спасибо. Я хочу удалить «/ Z» и «/ ZN» вместе вместо Z или ZN. и я хочу также удалить фигурные скобки. Поэтому я попытался сначала разбить его, а затем попытаться удалить его один за другим. – SKG
@sln. Я пробовал этот путь из идеи, которую вы дали. это сработало для меня. '$ line = ~ s/\/ZN? | \ (| LVT \) // g;' – SKG