Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

key value pair reference?

by Veltro (Beadle)
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 (Vicar) 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 rifling through the Monastery: (2)
As of 2018-05-21 06:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?