Perl 的-i
开关似乎修改了只读文件:
$ echo 'foobar' > tmp.txt
$ chmod -w tmp.txt
$ perl -pi -w -e 's/foobar/FOOBAR/' tmp.txt
$ cat tmp.txt
FOOBAR
这是出乎意料的,因为该命令不应该能够根据其权限修改文件。预计,尝试通过其他方式更新它会失败:
$ echo 'barbaz' > tmp.txt
-bash: tmp.txt: Permission denied
为什么 Perl 修改只读文件(以及如何修改?),最重要的是:我怎样才能让 Perl 不这样做?
我能在这方面找到的唯一一些信息资源是Perl FAQ:
文件的权限说明了该文件中的数据会发生什么。…如果您尝试写入文件,则文件的权限决定您是否被允许。
最终似乎它说它不应该能够写入它,因为文件系统说你不能。