检查数组数组中是否有一个数组为空

Roy*_*yeh 1 arrays perl

我正在写一个perl脚本,应该有一个数组数组.此数组查找当前目录中的所有文件夹,然后数组的大小取决于文件夹.children数组包含所有包含的文件名.我可能有一个空文件夹,但我仍然想为它创建一个数组.

my $root = "myCurrenDir";
@test = grep { -d "$root/$_" } read_dir($root);
my @array = ? # how can be defined
Run Code Online (Sandbox Code Playgroud)

我们假设在当前目录中有两个文件夹.然后父数组包含两个数组作为子数.(也许一个是空的).

然后我想检查(两个)数组是否为空,然后继续执行下一步.

我用Google搜索但无法找到明确的解决方案.我可以请你帮忙吗?(也许这很简单,但我坚持下去!).

Dav*_*oss 7

在标量上下文中计算数组将返回数组中的元素数.我们可以使用它来实现检查数组以查看它们是否包含任何数据的简单逻辑.

if (@array) {
  # @array contains data
} else {
  # @array contains no data
}
Run Code Online (Sandbox Code Playgroud)

如果你有一个包含对其他数组的引用的数组,那么我们仍然可以使用相同的逻辑 - 我们只需要取消引用我们的数组引用.

if (@{ $array[0] }) {
  # $array[0] contains data
} else {
  # $array[0] contains no data
}
Run Code Online (Sandbox Code Playgroud)

当然,我们可能希望@array在循环中检查所有子数组;

for (@array) {
  if (@$_) {
    # child array contains data
  } else {
    # child array contains no data
  }
}
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

此外,如果您正在行走目录树,那么File :: Find可能是一种更简单的方法.