如何从数组中删除所有的undefs?

19
在Perl中从配置文件读取内容时,可能会出现某些行无效且不需要添加到我的有效行数组中的情况。由于在此处使用for循环,即使无效行也会创建一个undef条目。如何在此后删除所有无效行?
谢谢!

1
如果您正在创建配置文件,请使用Config :: Simple等模块。如果您将预先存在的配置文件内容读入数组中,为什么要将无效条目推入数组而不是跳过它们? - beresfordt
1个回答

56
@array = grep defined, @array;

简单而伟大的解决方案 - iWizard
它对我有效。感谢您提供这个简单的解决方案。 - Gowri Shankar Balasubramaniam
有趣的是,我在使用 Perl 5.10.1 时看到了 defined(@array) is deprecated at /path/to/script.pl line X. 的警告。(是的,我知道现在已经是2021年了,但我只能用手头的工具) - joehep
应该立即添加,但是@array = grep {defined} @array; 适用于我特定版本的Perl。 - joehep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接