arrays - 为什么我似乎无法从 Perl 数组中删除未定义的元素?

标签 arrays perl list

我有一个来自哈希表中数据的字符串数组。我试图删除任何(显然)空的元素,但由于某种原因,似乎有一个顽固的元素拒绝删除。

我正在做:

# Get list array from hash first, then
@list = grep { $_ ne ' ' } @list; 
@list = uniq @list;
return sort @list;

grep 行,我收到 Use of uninitialized value in string ne... 消息,下面正确打印了数组的其余部分。

我尝试过“漫长”的方式:

foreach (@list) {
    if ($_ ne ' ') {
        push @new_list, $_;
    }
}

但这会产生完全相同的结果。我尝试使用 define 获得预期结果(什么也没有)。

我可以预先对数组进行排序并删除第一个元素,但这似乎非常危险,因为我无法保证数据集始终包含空白元素。诉诸正则表达式似乎也有些过分,但也许我是错的。像往常一样,我确信我错过了一些非常简单的事情。

最佳答案

元素不能为空。您正在尝试删除未定义元素。但是您不是在检查该元素是否未定义,而是在检查它是否由包含单个空格的字符串组成。你想要:

@list = grep defined, @list; 

关于arrays - 为什么我似乎无法从 Perl 数组中删除未定义的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13343663/

相关文章:

perl - 为什么 Perl 会按照这种模式重新分配内存?

perl - 脚本中的标题格式错误。错误 header =<!DOCTYPE html>

linux - 在后台运行 Perl 脚本并向其发送命令

c# - C#动态创建Type数组

java - 将输入流转换为 JSONArrary 时出现空异常

php - Laravel 从 Controller 文件中的集合创建数组

php - 从数组中的一个查询中插入多行

ios - Swift 从 ManagedObjectContext FetchRequest 获取日期数组

Python CSV 阅读器将行作为列表返回

python - 转置一个已经展平的方阵