Unix系统正在托管Windows工作站的共享文件夹。我编写了一个脚本来删除MS产品创建的旧临时文件。但它不起作用。我编写了此代码段来重现该问题:
use strict;
use warnings;
my $fn = '~$557.222 King Street.doc';
system( 'touch', $fn );
system( 'ls -l *.doc' );
unlink '$fn' or warn "$! $fn";
此脚本产生:
-rw-r--r-- 1 fbax fbax 0 May 18 21:33 ~$557.222 King Street.doc
No such file or directory ~$557.222 King Street.doc at ../qTest.pl line 8.
我尝试了许多变体;他们都失败了。如何取消链接删除此文件?
'$fn'
产生三个字符的字符串$fn
,而不是变量$fn
的值。替换
unlink '$fn'
with
unlink $fn
[当我测试诸如unlink
或rename
之类的行时,我通常会改用print
开始,这样我可以在做一些愚蠢的事情之前先查看参数。有了它,您将立即看到问题:
# unlink '$fn' or warn ...
print '$fn' or warn ...
这是我使用$,
的地方,该变量保存print
放在参数之间的字符串($"
是使用双引号的字符串,这是不同的):
# unlink @items or warn ...
local $, = ' ';
print @items or warn ...