LeoNerd | I feel there must be a way to do this... given func( foo => 1, bar => 2 ); how to write my ( $foo, $bar ) = .... inside the function? |
LeoNerd | My current attempt is my ( $foo, $bar ) = @{{@_}}{qw( foo bar )}; which is messy as sin |
icke | LeoNerd: what's the problem? readability? |
LeoNerd | Yeah |
dazjorz | LeoNerd: I'd change specs to be func({ foo => 1, bar => 2}) |
dazjorz | then my ($foo, $bar) = ($_[0]{foo}, $_[0]{bar}); |
ton | LeoNerd: If you insist on doing it on one line, that's about as good as it gets. But why not use a temporary hash ? Should be just as fast and as readable |
LeoNerd | Hrm.. :/ Then it's only marginally nicer as my ( $foo, $bar ) = @{$_[0]}{qw( foo bar )}; |
LeoNerd | my %args = @_; my ( $foo, $bar ) = @args{qw( foo bar )}; yeah... that works |
mst | LeoNerd: my ($foo, $bar) = do { my %a = @_; @a{qw(foo bar)} }; |
ton | if you combine it with a delete you can then check if %args is empty and catch typos or unexpected arguments.... |
LeoNerd | Oooh.. a do block |
vincent | or use padwalker |
LeoNerd | Oh, args won't be empty... this is a wrapper function that pulls a few named args off and sends the rest to a nested inner function |
LeoNerd | Now.. I want to call a function "foreach" but that breaks things... suggestions? |
icke | a method could be named 'foreach' |
LeoNerd | Yeah... but this is a plain function |
icke | tough |
LeoNerd | I suppose "iterate" is about as best as I'll get |
icke | for_each |
ton | LeoNerd: forall ? |
LeoNerd | I'll think on it overnight maybe.. I guess it's home time now |
icke | foreachandeverysingleone |
ton | forever, forfun, forlorn... |
vincent | FOREACH |
icke | boo |
LeoNerd | one_for $all and $all for @one; |
rindolf | forevery? |
rindolf | <LeoNerd> one_for $all and $all for @one; - heh |
rindolf | $one for @all and @all for @one |
rindolf | $one for @all and @all for @$one |
rindolf | $one for @all and @all for $one |
rindolf | Works too. |
LeoNerd | Hrm.. it does? |
LeoNerd | deparse: $one for @all and @all for $one |
buubot | LeoNerd: Error: syntax error at (eval 107195) line 1, near "@all for " |
LeoNerd | You can't use two postmod fors in a single statement |