Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Contextual::Return and Want, any major difference?

by duelafn (Vicar)
on Mar 03, 2012 at 14:47 UTC ( #957683=note: print w/replies, xml ) Need Help??


in reply to Contextual::Return and Want, any major difference?

Want dispatches based on immediate context, whereas Contextual::Return dispatches based on first use. Example:

#!/usr/bin/perl use warnings; use strict; use Contextual::Return; use Want; sub foo_want { if (want('HASH')) { return { foo => "bar" } } else { return "Hello" } } sub foo_ctx { return HASHREF { { foo => "bar" } } DEFAULT { "Hello" } } print foo_ctx()->{foo}, "\n"; print foo_want()->{foo}, "\n"; my $ctx = foo_ctx(); my $want = foo_want(); print $ctx->{foo}, "\n"; print $want->{foo}, "\n";

And the result

$ perl /tmp/test.pl bar bar bar Can't use string ("Hello") as a HASH ref while "strict refs" in use at + /tmp/test.pl line 22.

In the second case, Want "fails" because it was not called in hashref context.

Note: rreturn only needed in :lvalue subs

Update: Showed that the want code works when used inline.

Good Day,
    Dean

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://957683]
help
Chatterbox?
[Discipulus]: i fear no
[Discipulus]: i invented also 'gired'
[Lady_Aleena]: Discipulus, then that is a problem. I wanted to find total seconds of my entire .mp3 collection to do some math on it to see how many days of continuous music i have.
[LanX]: darn. .. I wanted to see Marine and Melonchon go to next round, just for fun xD
[Discipulus]: LA use Perl: traversing a dir tree is simple; foreach file mp3 $sec+= use Mp3::Info
[Lady_Aleena]: Discipulus, I was able to get the sum of the seconds on the command line using awk. Then I ran the result through a perl script and got the result. It came bach with 4 days, 9 hours, 56 minutes, 43 seconds.
[Lady_Aleena]: s/bach/back/;
[Discipulus]: gired anyway is the intermediate state between hired and fired (and vice versa;)
[Lady_Aleena]: Discipuluis, I don't know if I want to fight with File::Find. File::Find and I are not friends.
[Discipulus]: 4 day Bach is too muche even for me

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2017-04-23 20:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I'm a fool:











    Results (432 votes). Check out past polls.