我有一个可靠的人的错误报告,在Cygwin和Perl 5.14.2上,使用perl的-i
开关没有任何值创建 .bak 备份文件。它不应该根据perlrun中的文档:
If no extension is supplied, no backup is made and the current
file is overwritten.
此刻我无法访问Cygwin。有没有人看到这种行为?你能解释一下吗?是关于创建备份文件,它应该只是一个临时文件,而不能删除它?
以下是我建议重新创建它的步骤。请记住,这是针对Cygwin的:
perl -p -i -e 's/perl/Perl/g' filename
保存答案,以便在找到备份文件时解释可能发生的情况。提前评论“是的,我看到了”或“不,不能重现”可以是非正式的民意调查。
答案 0 :(得分:13)
perldoc perlcygwin sayeth(为清晰起见而编辑):
由于Windows-ish限制,使用
perl -i
就地编辑文件 必须创造一个 备份正在编辑的每个文件。因此,Perl会自动添加后缀.bak
虽然用perl -i.bak
调用 - 如果 您使用perl -i
而没有明确的备份扩展名。
可以说这个信息也应该在perlport中。
答案 1 :(得分:1)
是。例如:
# show we're in cygwin
% uname -a
CYGWIN_NT-6.1-WOW64 xzodin 1.7.15(0.260/5/3) 2012-05-09 10:25 i686 Cygwin
# show that directory is empty
% ls
# create a file
% touch foo
# invoke 'perl -pi' (but do nothing)
% perl -pi -e "" foo
# show that a backup file with extension '.bak' is created.
% ls
foo foo.bak