2013-06-06 3 views
1

Я хочу использовать регулярное выражение для удаления строки с помощью $,%, # этих трех символов, но, похоже, не может удалить $, а информация об ошибке показывает неопределенную переменную

Как решить эту проблему?

вот мой код

perl Remove.pl $ABC#60% 


#!/usr/bin/perl 

$Input = $ARGV[0]; 

$Input =~ s/\$|%|#//g; 

print $Input; 

благодаря

ответ

6

Я думаю, ваша проблема с оболочкой, а не с кодом Perl. Одинарная кавычка аргумент сценария:

perl remove.pl '$ABC#60%' 

Оболочка может интерпретировать «$ ABC» как имя переменной, в этом случае скрипт не будет принимать никаких аргументов. Затем Perl будет жаловаться на неопределенную переменную в подстановке.

1
$Input =~ s/[\$%#]//g; 

должны работать

1

если вы просто хотите, чтобы удалить некоторые Charactor, это будет лучше использовать тр

попробовать это:

perl -e '$arg = shift; $arg =~ tr/$%#//d; print $arg' '$asdf#$' 

ваш код просто отлично, но параметр вы передаете к программе будет расширяться Баш. вы должны поставить одинарной кавычки.

попробовать это:

perl Remove.pl '$ABC#60%' 
Смежные вопросы