http://qs321.pair.com?node_id=606220


in reply to Shorten one liners with Class::Autouse

bsb,
How does this make the one liner shorter? Isn't '->' the same length as '-M'? If I wanted to use more than one exported function (or the same function more than once) from Foo::Bar wouldn't this actually make the 1 liner longer?
perll -e 'print Foo::Bar->blah()' perl -MFoo::Bar -e 'print blah()' perll -e 'print Foo::Bar->blah(), Foo::Bar->asdf()' perl -MFoo::Bar -e 'print blah(), asdf()'
I admit that using a one liner is extremely rare for me and I am likely missing something. Would you mind giving a more detailed explanation of how this helps or is it just "cool"?

Cheers - L~R

Replies are listed 'Best First'.
Re^2: Shorten one liners with Class::Autouse
by bsb (Priest) on Mar 24, 2007 at 04:47 UTC
    It depends on the module, if Foo::Bar exports a procedural interface by default then it won't shorten anything. If it optionally exports functions then you have to type them in the export list (-MFoo::Bar=blah,asdf) in addition to the code.

    Dev::Bollocks doesn't export anything so you'd need to repeat the module name:

    perl -MDev::Bollocks -le 'print Dev::Bollocks->rand()' perll -le 'print Dev::Bollocks->rand()'
    I often use one liners like this to test drive a module, sometimes to filter things (eg. with Email::Valid). I expect that the -MSome::Long::Name -e '$s=Some::Long::Name->new()' type scripts will shrink nicely.

    BTW, I've only just started using this alias so I don't have a much of feel for it yet...