use Data::Dumper;
#-----------------------------
%merged = (%A, %B);
#-----------------------------
%merged = ();
while ( ($k,$v) = each(%A) ) {
$merged{$k} = $v;
}
while ( ($k,$v) = each(%B) ) {
$merged{$k} = $v;
}
#-----------------------------
# %food_color as per the introduction
%food_color = ( Galliano => "yellow",
"Mai Tai" => "blue" );
#%ingested_color = (%drink_color, %food_color);
#-----------------------------
# %food_color per the introduction, then
%drink_color = ( Galliano1 => "yellow",
"Mai Tai1" => "blue" );
%substance_color = ();
while (($k, $v) = each %food_color) {
$substance_color{$k} = $v;
}
while (($k, $v) = each %drink_color) {
$substance_color{$k} = $v;
}
print Data::Dumper->Dumper(\%substance_color);
print "\n";
#-----------------------------
foreach $substanceref ( \%food_color, \%drink_color ) {
while (($k, $v) = each %$substanceref) {
$substance_color{$k} = $v;
}
}
#-----------------------------
foreach $substanceref ( \%food_color, \%drink_color ) {
while (($k, $v) = each %$substanceref) {
if (exists $substance_color{$k}) {
print "Warning: $k seen twice. Using the first definition.\n";
next;
}
$substance_color{$k} = $v;
}
}
#-----------------------------
#@all_colors{keys %new_colors} = values %new_colors;
#-----------------------------
%merged = (%A, %B);
#-----------------------------
%merged = ();
while ( ($k,$v) = each(%A) ) {
$merged{$k} = $v;
}
while ( ($k,$v) = each(%B) ) {
$merged{$k} = $v;
}
#-----------------------------
# %food_color as per the introduction
%food_color = ( Galliano => "yellow",
"Mai Tai" => "blue" );
#%ingested_color = (%drink_color, %food_color);
#-----------------------------
# %food_color per the introduction, then
%drink_color = ( Galliano1 => "yellow",
"Mai Tai1" => "blue" );
%substance_color = ();
while (($k, $v) = each %food_color) {
$substance_color{$k} = $v;
}
while (($k, $v) = each %drink_color) {
$substance_color{$k} = $v;
}
print Data::Dumper->Dumper(\%substance_color);
print "\n";
#-----------------------------
foreach $substanceref ( \%food_color, \%drink_color ) {
while (($k, $v) = each %$substanceref) {
$substance_color{$k} = $v;
}
}
#-----------------------------
foreach $substanceref ( \%food_color, \%drink_color ) {
while (($k, $v) = each %$substanceref) {
if (exists $substance_color{$k}) {
print "Warning: $k seen twice. Using the first definition.\n";
next;
}
$substance_color{$k} = $v;
}
}
#-----------------------------
#@all_colors{keys %new_colors} = values %new_colors;
#-----------------------------
输出:
$VAR1 = 'Data::Dumper';
$VAR2 = {
'Mai Tai1' => 'blue',
'Mai Tai' => 'blue',
'Galliano1' => 'yellow',
'Galliano' => 'yellow'
};
Warning: Galliano seen twice. Using the first definition.
Warning: Mai Tai seen twice. Using the first definition.
Warning: Galliano1 seen twice. Using the first definition.
Warning: Mai Tai1 seen twice. Using the first definition.