无法打开目录,或者我的(Perl)代码有什么问题?
我有一个文件名 logspath.txt
,其中包含计算机上的日志目录路径。
每行一个目录。尽管该目录存在,但 Perl 说它不存在。
#!/usr/bin/perl -w
open FILE,"logspath.txt" or die $!;
while (<FILE>){
print $_;
opendir ($DIR,chomp($_)) or die $!;
当我运行脚本时,我得到:
/home/amosa/
No such file or directory at archive.pl line 6, <FILE> line 1.
列出目录:
~$ ls -l /home/amosa/
total 6
drwxr-xr-x 11 amosa prodapp 1024 Mar 2 12:49 deploy
drwxr-xr-x 2 amosa prodapp 512 Mar 2 12:39 lib
-rw-r--r-- 1 amosa prodapp 787 Mar 2 11:02 s
有什么建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
chomp
没有有意义的返回值,您可以将其传递给opendir
。您需要在opendir
上方的单独语句中chomp
字符串。chomp
has no meaningful return value that you can then pass ontoopendir
. You need tochomp
your string in a separate statement, above theopendir
.这应该是一条评论,但在评论中发布代码并没有真正起作用,所以我将其设为 CW。
以下是如何为更好的某些值编写此“更好”:
简而言之,使用词法文件和目录句柄,使用 打开 或 opendir 调用。
This should be a comment but posting code in comments does not really work so I am making it CW.
Here is how to write this "better" for some value of better:
In short, use lexical file and directory handles, use the three argument form of open and include the name of the file or directory you were trying to open in the error message enclosed in quotation marks or brackets to see what was actually passed to the open or opendir call.
使用严格;
使用警告;
这里“-d”用于检查目录是否可用。如果我们检查目录,它非常有用。
use strict;
use warnings;
Here "-d" is used to check the directory is available or not. If we check the directory it is very useful.