1

我想使用正则表达式删除带有 $ , % , # 这三个字符的字符串,但似乎无法删除 $ 并且错误信息显示未定义变量

我怎么解决这个问题?

这是我的代码

perl Remove.pl $ABC#60%


#!/usr/bin/perl

$Input = $ARGV[0];

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

print $Input;

谢谢

4

3 回答 3

6

我认为您的问题出在 shell 上,而不是 Perl 代码。单引号脚本的参数:

perl remove.pl '$ABC#60%'

shell 可以将 '$ABC' 解释为变量名,在这种情况下脚本将不接收任何参数。Perl 然后会抱怨未定义的变量替换。

于 2013-06-06T01:35:52.017 回答
1
$Input =~ s/[\$%#]//g;

应该工作

于 2013-06-06T01:35:37.863 回答
1

如果您只想删除一些字符,最好使用 tr

尝试这个:

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

您的代码很好,但是您传递给程序的参数将在 bash 中扩展。你应该放单引号。

尝试这个:

perl Remove.pl '$ABC#60%'
于 2013-06-06T01:48:27.893 回答