[请教]如何使用perl脚本删除文件名中带“$”字符的文件?

Piero 2005-09-12 08:00:29
我要实现的功能是从一个文件中逐一读出文件名并删除之,但发现有的文件名中含有“$”字符
我使用
use Shell;
$rmstatus = rm($filename);
总是报错,提示该文件不存在
rm: cannot remove `32#07052015221DAMsh2.log': No such file or directory

PS:原文件名为32#07052015221DAM$02.log
以上错误信息中显示为:32#07052015221DAMsh2.log
请问如何解决?
谢谢!
...全文
222 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fixopen 2005-10-11
  • 打赏
  • 举报
回复
与rm函数本身没有关系的。perl的“”内部的$xx会被替换而‘’内的不解释。
fibbery 2005-10-11
  • 打赏
  • 举报
回复
这应该是rm函数的问题,内部有对字符串插值.最好换一种方法.unlink不可以吗?我没有试过带$的文件删除.
fixopen 2005-10-11
  • 打赏
  • 举报
回复
$filename = '32#07052015221DAM$02.log';
rm($filename);

单引号就行了。
zgxbliss 2005-10-09
  • 打赏
  • 举报
回复
如果文件名没问题,文件里保存的文件名是程序生成的吗?会不会是生成文件名时被展开了?
zgxbliss 2005-10-09
  • 打赏
  • 举报
回复
看一下你系统里的文件名,大概是建立文件的时候就把$02解释成sh2了。
yakai 2005-09-24
  • 打赏
  • 举报
回复
文件名应该不是这样的,可能是不可识别字符,所以就显示个$给你看看,像?号一样了
binbin 2005-09-17
  • 打赏
  • 举报
回复
正则表达式去掉$,这是治标,治本的办法是检查生成这个文本文件的代码,为什么会生成的文件名中带有$???
xyzxyz1111 2005-09-13
  • 打赏
  • 举报
回复
先来一个
$filename =~ s/\$/\\\$/g;
如何?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧