当我open()使用包含尾随换行符的文件名调用perl的two-arg 时,将忽略换行符.然而,三个arg版本保留了换行符.
为什么行为会有所不同?为什么新线表面上被剥离了?
$ ls -1 nl; touch nl; ls -1 nl ls: nl: No such file or directory nl
strace显示了我期望的行为,FWIW.
$ perl -E 'open(F, "<", "nl\n") or die $!'
No such file or directory at -e line 1.
$ strace -e trace=open perl -E 'open(F, "<", "nl\n") or die $!' 2>&1 | grep nl
open("nl\n", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
$ perl -E 'open(F, …