Arrays 在perl中如何将数组值拆分为单独的数组

Arrays 在perl中如何将数组值拆分为单独的数组,arrays,perl,Arrays,Perl,我有一个将lat/long存储在一起的数组。例如: @values[0] = "-0.709999984318709,60.690000003554324" 我试图根据逗号将其分为两个数组,@lat和@long 我该怎么做 首先,最好写$values[0]来引用数组元素 假定逗号一致,split命令将在这里帮助您: foreach (@values) { my @separated = split(',', $_); push @lat, $separated[0]; push @

我有一个将lat/long存储在一起的数组。例如:

@values[0] = "-0.709999984318709,60.690000003554324"
我试图根据逗号将其分为两个数组,
@lat
@long

我该怎么做


首先,最好写$values[0]来引用数组元素

假定逗号一致,split命令将在这里帮助您:

foreach (@values) {
  my @separated = split(',', $_);
  push @lat, $separated[0];
  push @long, $separated[1];
}

有很多方法可以做到这一点,但我所做的方式应该能够显示如何处理数组。

我假设您希望将每个纬度和经度值保持在一起,在这种情况下,将数组转换为二维数组是合适的:

my @latlong = map { [ split /,/, $_, 2 ] } @values 
我在这里使用了
split
的完整表示法,以便调用两个字段的
LIMIT
条件。这可能与此数据无关,但如果条件发生变化,则可能很重要

map
语句的代码首先将
@values
的每个元素拆分为两个,将结果列表2放入一个匿名数组
[…]
,然后插入新数组。当使用
Data::Dumper
打印时,生成的数组如下所示:

$VAR1 = [
          [
            '-0.709999984318709',
            '60.690000003554324'
          ]
        ];

数组元素实际上是一个中间有逗号的字符串,还是引用2个元素的数组?@ WUMPUSS.WUBLLY是一个带有逗号的字符串。我通过将字符串拆分为基于空格的数组创建了它。您知道您想要
拆分
。因此,请尝试使用perldoc-f split。谢谢。这可以工作,但似乎对我的循环打印“$name:@values\n\n”做了一些奇怪的事情;将逐个返回每个区域的名称及其坐标。但要打印“$name:@long\n\n”;返回所有区域的所有经度,重复每个名称。我想我把代码放在了正确的位置,但想不出为什么会这样。@whatahitson你在说什么
$name
变量?你不能只是发明新的东西来解决你的问题。@TLP
$name
是我有坐标的每个地图的名称。我试图通过只包含代码的相关部分来简化我的问题。在我的脚本中包含所有代码是更好的形式吗?@whatahitson如果你想得到关于数据结构的建议,是的。