对于具有特殊字符的文件,perl取消链接失败
Unix系统正在为Windows工作站托管共享文件夹。 我编写了一个脚本来删除MS products创建的旧临时文件;但它不起作用。 我编写此代码片段是为了重现这个问题:对于具有特殊字符的文件,perl取消链接失败,perl,special-characters,unlink,Perl,Special Characters,Unlink,Unix系统正在为Windows工作站托管共享文件夹。 我编写了一个脚本来删除MS products创建的旧临时文件;但它不起作用。 我编写此代码片段是为了重现这个问题: 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--
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'
与
'$fn'
生成三个字符串$fn
而不是变量$fn
的值。替换
unlink '$fn'
与
当我在测试诸如
取消链接
或重命名
之类的行时,我通常会先使用打印
,这样我就可以在做蠢事之前查看参数。这样,您会立即看到问题:
# unlink '$fn' or warn ...
print '$fn' or warn ...
这是我使用$,
的一个地方,该变量保存打印的字符串,该字符串放在参数之间($”
是双引号字符串使用的,这是不同的):
当我测试诸如取消链接
或重命名
之类的行时,我通常会先使用打印
,这样我就可以在做愚蠢的事情之前看到参数。这样,您就会立即看到问题:
# unlink '$fn' or warn ...
print '$fn' or warn ...
这是我使用$,
的一个地方,该变量保存打印的字符串,该字符串放在参数之间($”
是双引号字符串使用的,这是不同的):
首先:删除取消链接
命令中'$fn'
周围的单引号。否则,您将尝试删除名为$fn
的文件,而不是实际文件。谢谢!我在我的原始代码中尝试了这一点;但事实证明,该脚本中还有另一个编码错误:(现在全部修复。作为初学者:在取消链接命令中删除'$fn'
周围的单引号。否则,您将尝试删除名为$fn
的文件,而不是实际文件。谢谢!我在原始代码中尝试了此操作;但该脚本中出现了另一个编码错误。:(现在全部修复)。