【发布时间】:2015-03-31 12:01:55
【问题描述】:
在 Perl 脚本中运行系统命令时如何使用通配符。 例如,使用 *.src 使用 sed 编辑文件 - 类似于:
system("sed -i -e 's/foo/bar/g' $baseDirPath/*.src");
它给出一个错误:sed: can't read /home/test/*.src: Not a Directory
这里,$baseDirPath被初始化为/home/test
【问题讨论】:
-
你显示的那一行应该可以正常工作。
-
您在尝试时遇到错误还是有其他问题?请注意,如果您的脚本有一堆特殊字符,单引号通常是一个更好的主意,因为双引号意味着字符串在传递之前由 perl 插值。
-
@DeVadder 编辑了问题以包含相关详细信息。
-
@AnuragSaran 该输出与按预期工作的 perl 一致。你确定真的有这些文件吗?也许您打算使用
~/test/*.src(您家中的一个测试文件夹,而不是某个名为 test 的用户的主文件夹)?然而,很明显,路径和通配符确实到达了 sed 命令,如错误消息所示。所以,如果有的话,你这里的 sed 有问题,而不是 Perl。
标签: perl command system wildcard