我希望做这样的事情.我记得在编程这样的时候,我遇到了一些价值消失的问题.这种类型的结构对于哈希是"正确/有效"的吗?
my %VAR;
$VAR{SCALAR} = "test scalar";
$VAR{ARRAY}[0] = "test array";
$VAR{HASH}{NAME}[0] = "test hash array 1";
$VAR{HASH}{NAME}[1] = "test hash array 2";
$VAR{HASH}{NAME}[2]{SOMEHASH} = "test hash array hash 1";
$VAR{HASH}{NAME}[2]{ANOTHERHASH} = "test hash array hash 2";
Run Code Online (Sandbox Code Playgroud) my %PlannedPerWeek = (
September => {
Week1 => [80, 23, 199, 45, 19, 36],
Week2 => [78, 21, 195, 43, 18, 36],
Week3 => [76, 19, 191, 41, 17, 36],
Week4 => [74, 17, 187, 39, 16, 36],
}
);
Run Code Online (Sandbox Code Playgroud)
我在perl prog中有上面的数组哈希哈希值.如何从上面的数据结构中访问元素'199'.
我需要将数组结构中的数据结构转换为树状结构.在开始处理数据之前,我知道树的深度,但我希望保持灵活性,以便重新使用代码.
因此,我着眼于动态生成subref(从基于Moose的模块中)到阵列之间的想法.像这样(以简化的方式):
use Data::Dump qw/dump/;
sub create_tree_builder {
my $depth = shift;
return eval join '', 'sub { $_[0]->{$_[',
join(']}->{$_[', (1..$depth)),
']} = $_[', $depth + 1 , '] }';
}
my $s = create_tree_builder(5);
my $tree = {};
$s->($tree, qw/one two three four five/, 'a value');
print dump $tree;
# prints
# {
# one => { two => { three => { four => { five => "a value" } } } },
# }
Run Code Online (Sandbox Code Playgroud)
这为我打开了世界,我发现这个eval过程的很酷的用途 - 在参数化生成的字符串中到处都是一个函数(显然,这是一个寻找问题的解决方案). …
我发现这个脚本递归地从目录中读取,我很难理解这行代码:
if ($file eq '.' || $file eq '..')
Run Code Online (Sandbox Code Playgroud)
所以,如果有人能解释一下这一点,谢谢.
我是perl的新手,我正在努力让这个脚本工作.
我已经取得了碎片或perl并且将它们作为单独的部分工作但是在试图将它们混合在一起时它失败了.即使显示错误消息,我也找不到我的错误.
工作和完成时的脚本将读取输出文件并通过它部分我的部分并且生成一个新的输出文件,其中包含一些附加文本的标题和该部分中行数的值.
我的问题是当它为数组中的每个关键字进行循环时它现在失败了,错误消息'Argument'"不是数组元素中的数字'.Perl将我引导到脚本中的一个部分但我无法看到我如何错误地调用该元素.数组中的所有元素都是alpha,但错误消息是指数值.
谁能看到我的错误.
谢谢
这是脚本
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
# this version reads each variable and loops through the 18 times put only displays on per loop.
my $NODE = `uname -n`;
my $a = "/tmp/";
my $b = $NODE ;
my $c = "_deco.txt";
my $d = "_deco_mini.txt";
chomp $b;
my $STRING = "$a$b$c";
my $STRING_out = "$a$b$d";
my @keyword = ( "Report", "Last", "HP", "sulog", "sudo", "eTrust", "proftp", "process", "active clusters", "pdos", …Run Code Online (Sandbox Code Playgroud) 是否不需要在代码的开头定义perl哈希变量.
例如,我在一个脚本变量"反式",这不是定义的发现my %trans或%trans在代码的任何地方.但以下代码似乎正在起作用.
$trans{$lang_code} = set_elements($files_to_process{$lang_code},@tags_to_extract);
Run Code Online (Sandbox Code Playgroud)
和
$test = $trans{lc $Preferred_Language}->{'t_14'};
Run Code Online (Sandbox Code Playgroud)
Perl在检查语法后继续将"trans"解释为哈希变量吗?这是怎么回事
我无法理解如何使用子程序原型返回数组.这是一个例子
sub f (&@) {
my ($func) = @_;
eval &$func;
}
my $a = f {return 1};
my @b = f {return (2,1,1,4)};
print "a = ".$a."\n";
print "b = ".scalar(@b)."\n";
Run Code Online (Sandbox Code Playgroud)
这种输出a = 1和b = 1,但我希望@b有长度为4.
我也尝试\ eval &$func在函数中返回引用f.然后我可以取消引用标量($$a是1),但是当解除引用数组(@$b)时perl告诉我它不是数组引用.
我是Perl的初学者,我试图从"Beginning Perl:Curtis Poe"运行这个示例
#!/perl/bin/perl
use strict;
use warnings;
use diagnostics;
my $hero = 'Ovid';
my $fool = $hero;
print "$hero isn't that much of a hero. $fool is a fool.\n";
$hero = 'anybody else';
print "$hero is probably more of a hero than $fool.\n";
my %snacks = (
stinky => 'limburger',
yummy => 'brie',
surprise => 'soap slices',
);
my @cheese_tray = values %snacks;
print "Our cheese tray will have: ";
for my $cheese (@cheese_tray) {
print "'$cheese' ";
} …Run Code Online (Sandbox Code Playgroud) 我需要将哈希转换为perl中的数组哈希
我有:
%hash = (
tinku => 15,
tina => 4,
rita => 18,
tinku => 18,
tinku => 17,
tinku => 16,
rita => 19
);
Run Code Online (Sandbox Code Playgroud)
我想将其更改为:
%hash = ( tinku => [ 15, 16, 17, 18 ], rita => [ 18, 19 ], tina => 4 );
Run Code Online (Sandbox Code Playgroud) perl associative-array hashtable data-structures perl-data-structures
我有一个多维哈希(维度的数量会有所不同),其中每个值都是一个简单的标量值或对另一个哈希的引用.
是否有一种删除每个最终值的好方法,保留指向其他哈希值的元素?基本上,把所有的肉从骨架上取下来.