Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

key value pair reference?

by Veltro (Monk)
on May 14, 2018 at 11:37 UTC ( #1214443=perlquestion: print w/replies, xml ) Need Help??
Veltro has asked for the wisdom of the Perl Monks concerning the following question:

I wish there was ... dream dream .. hash, key, value functions ... key value pair references... dream dream...

my $hash = { key => "value" } ; foreach( keys %{ $myHash } } { doSomething( \key $myHash->{$_} ) ; # or maybe without \ } sub doSomething { print "key = " . key $_[0] . "\n" ; print( ( value $_[0] ) . "\n" ) ; print( ( hash $_[0] )->{key $_[0]} . "\n" ) ; } __END__ key = key value value

or:

my $hash = { key1 => key $hash->{key1} } ; print key $hash->{ key1 } ; __END__ key1

or:

my $hash = { key1 => "" } ; print key $hash->{ key1 } ; __END__ Not a key value pair reference at line 2

or:

my $hash = { key1 => { key2 => \key $hash->{key1} } } ; print key $hash->{ key1 }->{ key2 } ; __END__ key1

or another one:

my $key = "key1" ; my $hash = { \$key => ...} ; print $key . "\n" ; print ( key $key ) . "\n" ; __END__ KEY0x83412523 key1

dream starts to repeat itself:

my $key = "key1" ; my $hash = { \$key => "value" } ; print( ( hash $key )->{ key1 } . "\n" ) ; print( value $key ) ; __END__ value value

And then I woke up...

Weird dream, I should go to a monk dream teller...

PS Please don't look at this code syntactically or start to look for typos. This is just free drawn and of course doesn't compile. I just like to see if anyone else ever felt something like this could be useful.

Replies are listed 'Best First'.
Re: key value pair reference?
by Corion (Pope) on May 14, 2018 at 11:48 UTC

    Do you want to get a magical variable that keeps together a value, its hash key and the hash where they originated from?

    package HashTriplet; use strict; sub new { my( $class, %options ) = @_; bless \%options => $class } sub hash { $_[0]->{hash} } sub key { $_[0]->{key} } sub value { my( $self ) = @_; $self->hash->{ $self->key } } 1; package main; use strict; my $myHash = { key => "value" } ; foreach( keys %{ $myHash } ) { doSomething( HashTriplet->new( hash => $myHash, key => $_ )); } sub doSomething { warn $_[0]; warn $_[0]->key; print "key = " . $_[0]->key . "\n"; print( ( $_[0]->value ) . "\n" ) ; print( ( $_[0]->hash )->{ $_[0]->key } . "\n" ) ; } __END__

    If you want the additional syntax trickery to make Perl treat key $x; as $x->key you will need to fiddle around a bit with prototypes, but as I'm a bit unclear on the purpose of your data structure, I'll just stop here.

Re: key value pair reference?
by BillKSmith (Parson) on May 14, 2018 at 14:16 UTC
      Hehe, not even close

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1214443]
Approved by 1nickt
Front-paged by haukex
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (5)
As of 2018-07-19 19:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (417 votes). Check out past polls.

    Notices?