对于具有特殊字符的文件,perl取消链接失败

问题描述 投票:0回答:2

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.

我尝试了许多变体;他们都失败了。如何取消链接删除此文件?

perl special-characters unlink
2个回答
2
投票

'$fn'产生三个字符的字符串$fn,而不是变量$fn的值。替换

unlink '$fn'

with

unlink $fn

0
投票

[当我测试诸如unlinkrename之类的行时,我通常会改用print开始,这样我可以在做一些愚蠢的事情之前先查看参数。有了它,您将立即看到问题:

# unlink '$fn' or warn ...
print '$fn' or warn ...

这是我使用$,的地方,该变量保存print放在参数之间的字符串($"是使用双引号的字符串,这是不同的):

 # unlink @items or warn ...
 local $, = ' ';
 print @items or warn ...
© www.soinside.com 2019 - 2024. All rights reserved.