我想使用正则表达式删除带有$,%,#这三个字符的字符串,但似乎无法删除$并且错误信息显示未定义的变量
我该如何解决这个问题?
这是我的代码
perl Remove.pl $ABC#60%
#!/usr/bin/perl
$Input = $ARGV[0];
$Input =~ s/\$|%|#//g;
print $Input;
感谢
答案 0 :(得分:6)
我认为你的问题是shell,而不是Perl代码。单引用脚本的参数:
perl remove.pl '$ABC#60%'
shell可以将'$ ABC'解释为变量名,在这种情况下,脚本不会收到任何参数。然后Perl会在替换时抱怨未定义的变量。
答案 1 :(得分:1)
$Input =~ s/[\$%#]//g;
应该工作
答案 2 :(得分:1)
如果你只想删除一些字符,最好使用tr
试试这个:
perl -e '$arg = shift; $arg =~ tr/$%#//d; print $arg' '$asdf#$'
你的代码很好,但你传递给程序的参数将在bash中扩展。你应该把单引号。
试试这个:
perl Remove.pl '$ABC#60%'