in reply to Re^2: Perl oddities
in thread Perl oddities

Sure you can, but you need the dreaded +:
print map +{$_}, qw/foo bar/

Replies are listed 'Best First'.
Re^4: Perl oddities
by Anonymous Monk on Mar 01, 2005 at 16:16 UTC
    No, you don't need the +:
    print map {"$_",}, qw/foo bar/
    works as well, although you need more characters. I don't think there is any case in Perl where you need unary minus for disambiguation where you can't disambiguate in another way using 2 or 3 other keystrokes.

    Unary plus is just a convenience, not a requirement.

      Quoting is not an identity function in Perl.

      "There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

        Quoting is not an identity function in Perl.

        It's not, but if you're going to use them as hash keys, they get quoted anyway:

        perl -MDevel::Peek -e '$a = 1; Dump ($a); %a = map +{$_}, $a; Dump ($a +)' SV = IV(0x8192edc) at 0x8191dc4 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 1 SV = PVIV(0x8184888) at 0x8191dc4 REFCNT = 1 FLAGS = (IOK,POK,pIOK,pPOK) IV = 1 PV = 0x818b5b8 "1"\0 CUR = 1 LEN = 2

        perl -MDevel::Peek -e '$a = 1; Dump ($a); %a = map {"$_",}, $a; Dump ( +$a)' SV = IV(0x8192edc) at 0x8191dc4 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 1 SV = PVIV(0x8184888) at 0x8191dc4 REFCNT = 1 FLAGS = (IOK,POK,pIOK,pPOK) IV = 1 PV = 0x818b5b8 "1"\0 CUR = 1 LEN = 2
        No difference.