我正在尝试将哈希中的键名设置为字符串containsig"/"符号
$myshash{"/dev/shm"} = "shared memory";
Run Code Online (Sandbox Code Playgroud)
但是当我使用Data :: Dumper查看时,我得到的东西就像'28/64'等.如何在哈希键名中使用这些特殊字符?
Jed*_*ith 27
28/64来自将哈希视为标量,并且表示使用了多少桶(以及桶的总数).将其转储为哈希而不是标量,您应该看到正确的数据 - 您所做的事情没有任何问题.
这对我来说很好:
use Data::Dumper;
my %hash;
$hash{"/dev/shm"} = "shared memory";
print Dumper(\%hash);
Run Code Online (Sandbox Code Playgroud)
和输出:
$VAR1 = {
'/dev/shm' => 'shared memory'
};
Run Code Online (Sandbox Code Playgroud)
为了澄清和回答您的根问题,您不是在哈希中使用特殊字符.由于大多数语言在内部将一个字符串散列为一个整数(仍在学习Perl,但这就是Python的工作方式),如果你愿意,你可以在那里放置高精灵着作中的符文字形,并且密钥创建可以正常工作.哈希函数并不关心.
Sin*_*nür 17
记得给Data :: Dumper引用你要转储的内容:
use Data::Dumper;
my %myshash;
$myshash{"/dev/shm"} = "shared memory";
print Dumper \%myshash;
Run Code Online (Sandbox Code Playgroud)
输出:
C:\Temp> t.pl
$VAR1 = {
'/dev/shm' => 'shared memory'
};
如果在标量上下文中计算哈希值,则在哈希值为空时返回false.如果有任何键/值对,则返回true; 更准确地说,返回的值是一个字符串,由使用的桶数和分配的桶数组成,用斜杠分隔.这非常有用,只是为了找出Perl的内部哈希算法是否在您的数据集上表现不佳.
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |