in reply to Using smartmatch with split function

Imposing list context on the split function won’t help, because the smartmatch operator infers the required behaviour only when it finds the righthand side to contain an array, not a list. So you can do this:

17:49 >perl -we "use v5.14; $a = 3456; print 'Yes' if 3 ~~ @{[split(// +, $a)]};" Smartmatch is experimental at -e line 1. Yes 17:49 >

which creates an anonymous array reference from the output of the split and then immediately dereferences it back to an array.

Whether that is really an improvement over using an explicit array is another question...

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Using smartmatch with split function
by trizen (Hermit) on May 26, 2014 at 09:18 UTC
    The smartmatch operator takes an array reference as argument:
    % perl -MO=Deparse -e '1 ~~ @{[1,2]}' Smartmatch is experimental at -e line 1. 1 ~~ \@{[1, 2];}; -e syntax OK
    simplifying the code to: 3 ~~ [split //, $a];
Re^2: Using smartmatch with split function
by gurpreetsingh13 (Scribe) on May 26, 2014 at 09:01 UTC
    Thanks. Worked perfectly.