perl - 当我尝试使用命令 opendir 时,为什么下面的 Perl 代码显示“在连接 (.) 或字符串中使用未初始化的值”
问题描述
我正在编写代码来显示目录中的所有文件和子文件夹。是opendir
并且readdir
仅用于显示文件还是也可以显示子目录?
以下是我正在使用的代码,我不知道我应该尝试什么。
#!/apps/perl/5.8.9/bin/perl
use strict;
use warnings;
opendir DIR , "/home/x0280511/" || die;
while (readdir DIR) {
print "$_\n";
}
我收到以下错误消息
在连接 (.) 或字符串中使用未初始化的值
上面的错误信息到底是什么意思?
解决方案
barereaddir
仅在 Perl 5.12+ 上的 while 循环表达式中有效。如果您使用的是早期版本的 Perl,则需要使用不同的语法来强制标量上下文:
while (my $ent = readdir DIR) {
print "$ent\n";
}
或者您可以readdir
在列表上下文中使用,只需注意它会在显示第一个条目之前查询整个目录内容:
foreach my $ent (readdir DIR) {
print "$ent\n";
}
希望有帮助!
推荐阅读
- typescript - Angular TS 构造函数使网页消失
- php - 在 WooCommerce 预订和约会中添加 2 周额外约会
- javascript - React 和 Redux:Payload 未出现在 Reducer 状态对象中
- model - Mlogit:如何在 fitstat 上解释模型的充分性
- c# - 我有一个小数添加奇怪的问题
- json - 在 Flutter 中重置密码 Rest Api
- azure - Azure 服务总线订阅
- spring-boot - 从上游读取响应标头时上游过早关闭连接 - 码头
- r - 从可能的分组变量组合创建完整的数据框
- ssis - 以 SQLServer 2019 为目标时,Visual Studio 2019 SSIS 项目出现 80040153 错误