perl - Perl 带字符串参数的 foreach
问题描述
Perldocs 仅表明foreach
循环“迭代普通列表值” https://perldoc.perl.org/perlsyn.html#Foreach-Loops,但我有时会看到它们带有字符串参数,例如以下示例:
foreach (`curl example.com 2>/dev/null`) {
# iterates 50 times
}
foreach ("foo\nbar\nbaz") {
# iterates just 1 time. Why?
}
传递这样的字符串的行为是否已定义?另外,为什么像示例中那样传递反引号命令返回的字符串和文字字符串会产生不同的结果?
解决方案
在标量上下文中,反引号返回一个包含封闭命令的所有输出的单个标量。但是foreach (...)
在列表上下文中评估反引号,这会将输出分成一个列表,每个元素一行。
推荐阅读
- r - ls(pattern="") 的意外行为
- php - 运行 PHPExcel 的内存使用情况
- api - 使用 REST API 将数据附加到文件
- intellij-idea - 我想验证特定字段是否存在并使用 RESTAssured API 自动化测试在控制台上打印
- javascript - 如何在 PHP 中将 json 编码传递给 cookie
- ssis - 使用 SSIS 派生列提取日期值
- python - 在 Python 中读取磁盘映像时出现内存错误
- ios - iOS 15 上的 AirPods Pro 无法播放音频文件
- python - 如何在 Python 中从另一个模块调用的模块中模拟一个类?
- c++ - Swig:使用 weak_ptr 时的简单惯用包装器用法?