David Draley wrote:

> I am trying to make a hash slice that only includes the keys "SHELL" and
> "DB" for %unix - using a reference.  How do I reference specific elements in
> a % table?  thanks

Hash slice is a list of values (for given keys).
This two lines does the same:

  @slice = @unix{SHELL,DB};
  @slice = ($unix{SHELL}, $unix{DB});

@slice array now contains two elements: "/bin/csh" and "mysql".

But as far as I understood, you don't want a slice, but a second hash
which will have only part of key/value pairs from the first one. Hash
slice is an l-value, so you can assign one hash slice to another:

  @unix2{SHELL,DB} = @unix{SHELL,DB};

that way, %unix2 hash will have SHELL and DB values (and only those) the
same as %unix hash. You can also store keys in array:

  @keys = qw(SHELL DB PAGER);
  @unix3{@keys} = @unix{@keys};

Is that what you need? In Perl 5 the funny character ($, @, %) means
what the expression evaluates to. Hash slice is a list, so it starts
with @ sign. However in Perl 6 this will change.

- RaFaL Pocztarski, [EMAIL PROTECTED]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to