Perl问题:我有一个冒号分隔文件,其中包含我正在使用的路径。我只是使用正则表达式进行拆分,如下所示:
/**
* All of your logic to get the messages
*/
$message = [
'title' => 'This is basically the same thing as the W3 Schools link.',
'body' => 'After JSON Encoding this array, and echoing it out it will be sent to your XHR requests onreadystatechange function'
];
// Its important that the call to header goes before ANY output.
// otherwise it will bomb.
header("Content-Type: application/json;");
echo json_encode($message);
确切的文件格式为:
my %unique_import_hash;
while (my $line = <$log_fh>) {
my ($log_type, $log_import_filename, $log_object_filename)
= split /:/, line;
$log_type =~ s/^\s+|\s+$//g; # trim whitespace
$log_import_filename =~ s/^\s+|\s+$//g; # trim whitespace
$log_object_filename =~ s/^\s+|\s+$//g; # trim whitespace
}
我想要的是一个索引文件,其中包含每个唯一键type : source-filename : import-filename
的最后推送$log_object_filename
,因此,我将要用英语/ Perl伪代码执行的操作是推送{ {1}}到由哈希$log_import_filename
索引的数组上。然后,我想迭代键并弹出$log_object_filename
引用的数组并将其存储在一组标量中。
我的具体问题是:附加到数组的语法是什么?哈希值
答案 0 :(得分:4)
答案 1 :(得分:4)
如果您只关心每个键的 last 值,那么您就会过度思考问题。当简单赋值将覆盖之前的值时,无需使用数组:
while (my $line = <$log_fh>) {
# ...
$unique_import_hash{$log_import_filename} = $log_object_filename;
}
答案 2 :(得分:2)
use strict;
use warnings;
my %unique_import_hash;
my $log_filename = "file.log";
open(my $log_fh, "<" . $log_filename);
while (my $line = <$log_fh>) {
$line =~ s/ *: */:/g;
(my $log_type, my $log_import_filename, my $log_object_filename) = split /:/, $line;
push (@{$unique_import_hash{$log_import_filename}}, $log_object_filename);
}
寻求Perl monks的智慧。