首页 > 解决方案 > 钻石运算符如何使用数组作为参数

问题描述

我有一个数组@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";
}

<>对这种情况有什么神奇的作用吗?你可以注意到,线被分割了

标签: arraysstringperliodaemon

解决方案


那是……不是菱形运算符所做的,这就是为什么您找不到任何示例的原因。

你只需要:

foreach my $line ( @address ) { 
  print $line;
}

<>表示从文件句柄读取,而不是@address文件句柄。它甚至不是文件句柄数组。

你理论上可以做

while ( my $line = <DATA> ) { 
   print $line; 
}

因为DATA是文件句柄,所以<>会触发从该文件句柄读取的单个记录。(记录边界默认为换行,但您可以更改$/

鉴于您使用 Mojo 所做的事情,这没有任何意义,我只是将其作为它应该如何工作的示例。


推荐阅读