perl哈希用于循环以获取数字

perl哈希用于循环以获取数字,perl,hash,Perl,Hash,我有一个像这样的杂烩 key value 1 ababababab 11 cdcdcdcdcd 21 efefefefef 31 fgfgfgfgfg 41

我有一个像这样的杂烩

 key                                  value
  1                                  ababababab
 11                                  cdcdcdcdcd
 21                                  efefefefef
 31                                  fgfgfgfgfg
 41                                  ererererer
现在我有一个数组[0]=5,数组[1]=22 我怎样才能从5-22得到字符串

 abababababcdcdcdcdcdef

我计划使用foreach将密钥与5和22进行比较,但我不知道如何解决它。

首先,您需要跟踪所需的哈希密钥对值。对于5和22,您需要$hash{1}、$hash{11}和$hash{21}。。小片段

if($a=1;$a<=41;$a+10)
{
 if($array[0] >=$a && $array[0] <=$a+10)
 {
  $starting_hash_key=$a;
 }
 if($array[1] >=$a && $array[1] <=$a+10)
 {
  $Ending_hash_key=$a;
 }
}

如果($a=1;$a=$a&&$array[0]=$a&&$array[1]首先你需要跟踪你需要的散列密钥对值。对于5和22,你需要$hash{1}、$hash{11}和$hash{21}..一个小片段

if($a=1;$a<=41;$a+10)
{
 if($array[0] >=$a && $array[0] <=$a+10)
 {
  $starting_hash_key=$a;
 }
 if($array[1] >=$a && $array[1] <=$a+10)
 {
  $Ending_hash_key=$a;
 }
}
if($a=1;$a=$a&&$array[0]=$a&&$array[1]
my%hash=qw(
1阿巴巴
11疾病控制与预防中心
21 EFEFEF
31 FGFGFG
41埃雷雷尔
);
my@array=(5,22);
my$str=join“”,映射$hash{$\uj},排序{$a$b}键%hash;
打印
my$result=substr($str,$array[0]-1,$array[1]-$array[0]+1);
my%hash=qw(
1阿巴巴
11疾病控制与预防中心
21 EFEFEF
31 FGFGFG
41埃雷雷尔
);
my@array=(5,22);
my$str=join“”,映射$hash{$\uj},排序{$a$b}键%hash;
打印
my$result=substr($str,$array[0]-1,$array[1]-$array[0]+1);

如果希望数据像字符串一样工作,为什么要将其存储在散列中?只需将其放入字符串中:

my $string = "abababababcdcdcdcdcdefefefefeffgfgfgfgfgererererer";
或者,如果需要该散列存在以供以后使用,请从中构造一个字符串以用于此操作:

my $string = join "", map $hash{$_}, sort {$a <=> $b} keys %hash;

我相信你可以找到一种黑客方法来处理你的散列,但这不是散列的目的,这将是更好的选择和可读性。

如果你想让数据像字符串一样工作,为什么要将数据存储在散列中?只需将其放在字符串中:

my $string = "abababababcdcdcdcdcdefefefefeffgfgfgfgfgererererer";
或者,如果需要该散列存在以供以后使用,请从中构造一个字符串以用于此操作:

my $string = join "", map $hash{$_}, sort {$a <=> $b} keys %hash;

我相信你可以找到一种黑客的方法来处理你的散列,但这不是散列的目的,这将是更为优化和可读的。

要么输出应该是
abababababbcdcdcdefefefefefeeff
要么我不理解你的问题。关键是第一个字符的位置,所以我想要位置5-22,也就是abababababababababbcDCDCDEF如果键是字符位置,则输出应该是ababababcdcdcdcdcdcdDef如果您想将数据视为单个字符串,那么为什么数据会以哈希形式存储而不是存储为单个字符串?要么输出应该是
abababababcdcdcdDefefefef
,要么我不理解您的问题n、 键意味着第一个字符的位置,所以我想要位置5-22,也就是abababcdcdcdcdcdcdcdcdcdefif键是字符位置,那么输出应该是ababababadcdcdcdcdcdcdcdefif如果你想把数据当作一个字符串来处理,那么为什么它会被存储在散列中而不是一个字符串中呢?@jesseiu你可以若对你们有效,请接受这个答案。@JesseSiu若对你们有效,你们可以接受这个答案。