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