我想在Perl中做,相当于以下Ruby代码:
class Foo
MY_CONST = {
'foo' => 'bar',
'baz' => {
'innerbar' => 'bleh'
},
}
def some_method
a = MY_CONST[ 'foo' ]
end
end
# In some other file which uses Foo...
b = Foo::MY_CONST[ 'baz' ][ 'innerbar' ]
Run Code Online (Sandbox Code Playgroud)
也就是说,我只想声明一个常量的嵌套哈希结构,以便在类和外部使用.如何?
# I have a hash
my %my_hash;
# I have an array
@my_array = ["aa" , "bbb"];
# I store the array in my hash
$my_hash{"Kunjan"} = @my_array;
# But I can't print my array's element
print $my_hash{"Kunjan"}[0];
Run Code Online (Sandbox Code Playgroud)
我是Perl的新手.请帮我.
我有一组可变大小的字符串,例如:
AAA23
AB1D1
A1BC
AAB212
我的目标是按字母顺序排列并为COLUMNS收集独特的字符,例如:
第一栏:AAAA
第二栏:AB1A
等等...
在这一刻,我能够通过散列哈希来提取帖子.但是现在,我该如何对数据进行排序?我可以为每个散列哈希创建一个新数组吗?
非常感谢你的帮助!
人
我的代码:
#!/usr/bin/perl
use strict;
use warnings;
my @sessions = (
"AAAA",
"AAAC",
"ABAB",
"ABAD"
);
my $length_max = 0;
my $length_tmp = 0;
my %columns;
foreach my $string (@sessions){
my $l = length($string);
if ($l > $length_tmp){
$length_max = $l;
}
}
print "max legth : $length_max\n\n";
my $n = 1;
foreach my $string (@sessions){
my @ch = split("",$string);
for my $col (1..$length_max){
$columns{$n}{$col} = $ch[$col-1];
}
$n++; …Run Code Online (Sandbox Code Playgroud) 我想迭代一个哈希数组的引用,而不必制作本地副本,但我一直得到不能使用字符串("1")作为ARRAY引用,而"严格引用"错误.为什么?我如何解决它?
sub hasGoodCar {
my @garage = (
{
model => "BMW",
year => 1999
},
{
model => "Mercedes",
year => 2000
},
);
run testDriveCars( \@garage );
}
sub testDriveCars {
my $garage = @_;
foreach my $car ( @{$garage} ) { # <=========== Can't use string ("1") as an ARRAY ref while "strict refs" error
return 1 if $car->{model} eq "BMW";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一组部分有序的任务,对于每个任务,在执行之前必须执行部分顺序之前严格执行的所有任务.我想同时执行不相关的任务(在一个之前或之后)以尝试最小化总执行时间 - 但是在完成依赖之前不启动任务.
任务将作为(非perl)子进程运行.
我应该如何使用Perl解决这样的问题?什么是并发控制工具和数据结构?
伪代码:
my @unsortedArray = { ["Harry", 10], ["Tim", 8], ["Joe", 3]};
my @sortedArray = ?????
Run Code Online (Sandbox Code Playgroud)
最终sortedArray应该基于col-2(整数)进行排序,处理与"人名"(col-1)的1对1关系.最终结果应如下所示:
sortedArray should be { ["Joe", 3], ["Tim", 8], ["Harry", 10] };
Run Code Online (Sandbox Code Playgroud) 我试图序列化散列哈希值,然后反序列化它以获取哈希的原始散列.问题是每当我反序列化它时..附加一个自动生成的$ var1例如.
原始哈希
%hash=(flintstones => {
husband => "fred",
pal => "barney",
},
jetsons => {
husband => "george",
wife => "jane",
"his boy" => "elroy",
},
);
Run Code Online (Sandbox Code Playgroud)
出现在$ VAR1 = {'simpsons'=> {'kid'=>'bart','wife'=>'marge','husband'=>'homer'},'flintstones'=> {'丈夫' >'fred','pal'=>'barney'},};
有没有什么办法可以得到没有$ var1的哈希的原始哈希.. ??
我在perl中遇到了处理内存的奇怪问题.我正在使用一个使用相当大的哈希结构的perl应用程序.我正在为来回对象指定has ref.但最后似乎即使我要释放对象和哈希值,内存使用量也保持不变.
以下是问题的示例:
my $hash = {};
.............
this ds gets populated with a lot of data ...
.......
{
my $obj = new Class("data"=>$hash);
.......
.......
......
}
#even undefing the $hash
undef $hash;
# I can expect some improvement in Memory Utilization, but its not happening
Run Code Online (Sandbox Code Playgroud)
我想我正在做一些非常基本的错误.任何人都可以建议吗?
首先,如果有人提出这个问题,我想道歉.很难找到答案,无法找到如何创建数组哈希和哈希的数组....
我正在创建一个日志分析器.每个错误条目都在表单中
timestamp # # human_timestamp errno #
Run Code Online (Sandbox Code Playgroud)
我使用映射函数创建了散列哈希,以执行以下操作:
$logRef->{++$errCnt} =
{
line => $lineNum,
timestamp => $timestamp,
humanStamp => $humanStamp,
errno => $errno,
text => ''
};
Run Code Online (Sandbox Code Playgroud)
稍后我会做一些分析,我想在行号之间隔离条目.分析条目也存储在哈希中......
$analysis{++$iteration} =
{
result => $result,
startLine => $startLine,
endLine => $endLine,
errors => undef
};
Run Code Online (Sandbox Code Playgroud)
$ analysis {errors}将是一个数组引用.通过执行以下操作填充它.
foreach my $iteration ( keys %analysis )
{
my @errKeys = grep { $logRef->{$_}{line} >= $analysis{$iteration}{startLine} &&
$logRef->{$_}{line} <= $analysis{$iteration}{endLine} }
keys %$logRef;
my @errs = ();
push @errs, $logRef->{$_}{errno} foreach ( …Run Code Online (Sandbox Code Playgroud) 我想使用相同的键构建多个哈希,并且当我打印它们时键要具有相同的顺序.因此,在下面的例子中,密钥$hash1和$hash2应始终具有相同的顺序,但应该没有必要创建哈希时保留这个顺序.
use Data::Dumper;
my $hash1 = {
keyc => 2,
key1 => 1,
keya => 3,
keyb => 4,
};
my $hash2 = {
keyc => 2,
key1 => 1,
keya => 3,
keyb => 4,
};
print Dumper $hash1, $hash2;
Run Code Online (Sandbox Code Playgroud)
但输出如下:
$VAR1 = {
'key1' => 1,
'keyc' => 2,
'keyb' => 4,
'keya' => 3
};
$VAR2 = {
'keyb' => 4,
'keya' => 3,
'keyc' => 2,
'key1' => 1
};
Run Code Online (Sandbox Code Playgroud)
即哈希有不同的意外顺序.我的perl出了什么问题? …