为什么以下脚本需要这么多周期才能完成?
正在筛选的文件长20590行,每行包括以下内容或其变体; "10160354001 ALGIERS ALGERIA 36.70 3.60 290"
我正在尝试建立一个数据库,以匹配第一个数字到最后一个3.
然而,实际程序每行需要几秒钟.
脚本:
#! /usr/bin/perl
$path = shift(@ARGV);
open COORDS, $path or die "Couldn't open file\n";
my %coords = {};
foreach $line (<COORDS>){
$stat = substr $line,0,11;
@coords = grep(($_!=undef),split(/ /,substr $line,42));
$coords[$stat]=@coords;
}
print $coords['10160354001'];
close(COORDS);
Run Code Online (Sandbox Code Playgroud)
$coords['10160354001'] = ...是一个数组元素的赋值,一个大数组元素.此语句将导致Perl为至少10160354002个元素分配一个具有空间的数组.
你打算使用哈希:
$coords{$stat} = "@coords";
...
print $coords{'10160354001'};
Run Code Online (Sandbox Code Playgroud)
use strict并且use warnings会提醒您使用代码中的此问题和其他问题.