1

我正在尝试.url使用$name =~ s/\.url$//;. 但是,某些名称在扩展名之前包含一个感叹号,例如:

"for example-this!.url" "and-something-else!.url"

这会导致 perl 发出错误并停止运行:

bash: !.url": event not found

有没有办法克服这个问题?下面显示了我正在使用的部分相关代码:

foreach my $f (@ARGV) {
 my (undef, $dir, $name) = File::Spec->splitpath($f);
 $name =~ s/\.url$//;
4

2 回答 2

2

error启用历史扩展(这是默认设置)时,您会遇到这种情况。

为了禁用,做

set +o histexpand

在命令行上。

于 2013-04-17T10:41:20.803 回答
1

错误不是来自 perl,而是来自 bash。您可能希望将文件名存储在文件中并从那里读取它们。请注意,此问题仅在 bash 解析您的命令行输入时发生。当脚本从文件、管道等读取文件名时,不会有任何问题。

于 2013-04-17T10:20:25.033 回答