in reply to Two arrays into hash

Methinx you could use rudimentary algebraic methods to arrive at your goal, consider:
```@array1=qw(A B C);
@array2=qw(1 2 3);
is equivalent to/can be re-written as:
```@array1=('A', 'B', 'C');
@array2=('1', '2', '3');
Also, the requirement can be re-written as:
```%hash = (
array1=>[('A','B','C')],
array2=>[('1','2','3')]
};
So, substituting for ('A','B','C') & ('1','2','3'), into the re-written required result, gives:
```%hash = (
array1=>[@array1],
array2=>[@array2]
};
But, [@array] can be/usually is written as \@array, hence,
```%hash = (
array1=>\@array1,
array2=>\@array2
};
As required - also discoverable by reference to perlreftut - as moritz has previously suggested.

A user level that continues to overstate my experience :-))

Replies are listed 'Best First'.
Re^2: Two arrays into hash
by davorg (Chancellor) on Jul 16, 2009 at 10:40 UTC
[@array] can be/usually is written as \@array

Careful. The two are not the same. \@array returns a reference to the existing array. [@array] creates a new (anonymous) copy of the original array and returns a reference to the copy. It's a subtle difference, but an important one.

```#!/usr/bin/perl

use strict;
use warnings;

my @arr = (1 .. 5);

my %hash = (
aref => \@arr,
copy => [ @arr ],
);

print "@{\$hash{copy}}\n";
print "@{\$hash{aref}}\n";

@arr = ('a' .. 'e');

print "@{\$hash{copy}}\n"; # original values
print "@{\$hash{aref}}\n"; # changed values