我有这个输出 Dumper
'group' => {
'1104' => {
'a' => 1
},
'52202' => {
'b' => 1,
'c' => 1
},
'52201' => {
'c' => 1
},
'52200' => {
'c' => 1
}
},
Run Code Online (Sandbox Code Playgroud)
我假设是哈希数组哈希?
我想宣布这个结构是我自己的.
有没有办法做到这一点,所以下次我看到这么复杂的结构时,我可以立刻做到这一点?=)
我目前使用以下哈希工作正常
%hash = (
'env1' => 'server1:port1, server11:port11',
'env2' => 'server2:port2, server22:port22'
) ;
但是,我真正想要做的是创建以下数据结构,这将使我更容易提取信息.以下显然不起作用.
( env1 => "server=server1, port=port1", "server=server11, port=port11", env2 => "server=server2, port=port2", "server=server22, port=port22" ) ;
想知道是否有人对创建符合我要求的数据结构有任何建议.
我正在尝试执行这个简单的代码,但它已经给我以下错误:
在permutation.pl第11行的字符串中使用未初始化的值$ string.
#!usr/bin/perl
use strict ;
use warnings ;
sub message {
my ($string) = @_ ;
print "$string" ;
}
message() ;
Run Code Online (Sandbox Code Playgroud) 最近我使用chilkat perl库发送电子邮件
http://www.example-code.com/perl/smtp_simpleSend.asp
当我创建新对象
use chilkat();
# The mailman object is used for sending and receiving email.
$mailman = new chilkat::CkMailMan();
$mailman->put_SmtpHost("smtp.chilkatsoft.com");
# Set the SMTP login/password (if required)
$mailman->put_SmtpUsername("myUsername");
$mailman->put_SmtpPassword("myPassword");
Run Code Online (Sandbox Code Playgroud)
当我尝试使用Dumper方法打印对象时,它什么都不返回.
print Dumper($mailMan);
$VAR1 = bless( {}, 'chilkat::CkMailMan' );
Run Code Online (Sandbox Code Playgroud)
我们如何隐藏上面的祝福对象中的数据?
如何创建一个接受所有类型变量的子例程并确定它是否是(标量,散列,数组或引用)
sub know_var {
my $this_var = shift;
if ($this_var eq "array"){
print "This variable is an array!";
} elsif ($this_var eq "hash") {
print "This variable is a hash!";
} elsif ($this_var eq "hash ref") {
print "This variable is an hash reference!";
} so on..
}
my @array = ('foor', 'bar');
my %hash = (1 => "one", 2 => "two");
my $scalar = 1;
my $scalar_ref = \$scalar;
my $hash_ref = \%hash;
my $arr_ref = \@array;
know_var(@array);
know_var($scalar_ref); …Run Code Online (Sandbox Code Playgroud) 普通和简单的"新手perl代码不起作用,作者不知道为什么"问题:
sub print_hash {
our %hash;
my @list = sort {$hash{$a} <=> $hash{$b} keys %hash;
foreach my $name (@list) {
printf "$name $hash{$name}";
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
syntax error at ./freq line 27, near "my "
Global symbol "@list" requires explicit package name at ./freq line 27.
BEGIN not safe after errors--compilation aborted at ./freq line 27.
Run Code Online (Sandbox Code Playgroud)
我假设我以某种方式搞砸了我的范围.添加our %hash到排序eval根本没有帮助(抛出更多错误),并将其外包给sub也是如此.此代码几乎直接从哈希排序教程中窃取.我真的很感激我的错误解释!
我有三个哈希,我想将每个哈希分解成一个Hash of Arrays.每个都可以通过split函数传递给子程序,但是这需要调用3次相同的子程序.我试图遍历每个哈希并将它们拆分但没有成功.是否可以在不调用子程序的情况下执行此操作?我试过的代码是:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my %hash1 = (
A => "AAAAAAAAAA",
B => "AAAAANAAAA",
C => "AAAAAXAAAA",
D => "AAXAAAAAAA",
E => "AAAAAAAAAX",
);
my %hash2 = (
F => "BBBBBBBBBB",
G => "BBBBBBBBBB",
H => "BBXBBBBBBB",
I => "BBBBBBBBBB",
J => "AAAAANAAAA",
);
foreach my $ref ( \%hash1, \%hash2 ) {
while ( my ($key, $value) = each %$ref) {
@{ $ref->{$key} } = split (//, $value );
}
}
print Dumper %hash1; …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用perl中的函数创建哈希.实际上我正在研究在perl中创建二叉搜索树.以下是代码:
sub newhash {
$data = shift;
$left = undef;
$right = undef;
%node = ("data"=>$data,"left"=>$left,"right"=>$right);
return (\%node);
}
$firstele = newhash(2);
foreach ( keys %$firstele )
{
print "$_:$firstele->{$_}\n";
}
$node = newhash(1);
foreach ( keys %$node )
{
print "$_:$node->{$_} \n";
}
foreach ( keys %$firstele )
{
print "$_:$firstele->{$_}\n";
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,当我打印原始哈希时,数据键被我传递给newhash函数的任何内容所取代.输出:
left:
right:
data:2
left:
right:
data:1
left:
right:
data:1
Run Code Online (Sandbox Code Playgroud)
任何想法为什么数据键被替换?
我希望能够将此CSV文件读入数组或散列数组以进行操作.我该怎么办呢?
例如,我的文件包含以下内容(第一行是标题):
Name,Age,Items,Available
John,29,laptop,mouse,Yes
Jane,28,desktop,keyboard,mouse,yes
Doe,56,tablet,keyboard,trackpad,touchpen,Yes
Run Code Online (Sandbox Code Playgroud)
第一列是名称,第二列是Age,第三列是Items,但是项目可以包含多个以逗号分隔的内容,最后一列是Person可用性.
我怎样才能准确读到这个?