arrays - 钻石运算符如何使用数组作为参数
问题描述
我有一个数组@address
,其零元素包含一些字符串。我找不到使用 @array 作为参数的示例菱形运算符。(它如何“拆分”字符串?)
use Mojo::Loader qw/ data_section /;
my @address = data_section 'main', 'address_strings';
while( my $line = <@address> ) {
print $line;
}
1;
__DATA__
@@ address_strings
"010101, УУУ обл., м. Тернопіль, вул. ВВВ, буд. 0101, 01"
"020202, ЛЛЛ обл., ААА район, село ФФФ, ВУЛИЦЯ ШШШ, будинок 01"
"030303, м.ЮЮЮ, ЮЮЮ р-н, вул. ЛЛЛ, буд.01, офіс 01"
从 doc 运算符读取UPD<>
允许 GLOB 或文件句柄,但在我的情况下,这只是一个字符串的数组。
my @arr = <<TEXT;
many
lines
TEXT
while( my $line = <@arr> ) {
print ">>$line<<\n";
}
<>
对这种情况有什么神奇的作用吗?你可以注意到,线被分割了
解决方案
那是……不是菱形运算符所做的,这就是为什么您找不到任何示例的原因。
你只需要:
foreach my $line ( @address ) {
print $line;
}
<>
表示从文件句柄读取,而不是@address
文件句柄。它甚至不是文件句柄数组。
你理论上可以做
while ( my $line = <DATA> ) {
print $line;
}
因为DATA
是文件句柄,所以<>
会触发从该文件句柄读取的单个记录。(记录边界默认为换行,但您可以更改$/
)
鉴于您使用 Mojo 所做的事情,这没有任何意义,我只是将其作为它应该如何工作的示例。
推荐阅读
- java - 在 JNA 中使用 printf 和 scanf 的问题
- javascript - 优化映射数组
- python - 使用标准化 x 轴在同一 x 轴上绘制多条线
- c# - 同一根目录中的多个 C# 项目
- django - Django 从文件名中删除“@”和其他特殊字符
- google-my-business-api - 如何使用 GMB API 修补除摘要之外的 localPost?
- plotly - 将时间序列添加到袖扣 quantfig 图中
- javascript - 在 axios 发布后使用 React 钩子设置状态
- docker - 如何在 docker 容器中更改 freeradius-server 的配置?
- android - 字母“r”、“o”和“e”在 Android Studio 中无法正常工作?