Please paste the command you're trying. Hash subscript works for me.
$ perl -le '%t = (a => "b", c => "d"); print $t{a}'
b
On Wed, Jul 27, 2011 at 2:05 PM, Avishalom Shalit <[email protected]>wrote:
> to reiterate the problem
>
> $t{something}
> is interpreted as ($t) ({something})
>
> in a one liner
>
> (not in a script)
> -- vish
>
>
>
>
>
> On 27 July 2011 11:59, Avishalom Shalit <[email protected]> wrote:
> > i did
> > @t{map uc,@months}=1..12;
> >
> > took care of that
> > (and tested with
> >
> > perl -MData::Dumper
> >
> > ...
> > print Dumper(\%t);
> > ...
> >
> >
> > case isn't the case
> >
> >
> >
> > -- vish
> >
> >
> >
> >
> >
> > On 27 July 2011 11:25, Gaal Yahas <[email protected]> wrote:
> >> You need @months = map uc, @months.
> >>
> >> On Wed, Jul 27, 2011 at 12:42 PM, Avishalom Shalit <[email protected]
> >
> >> wrote:
> >>>
> >>> oh,
> >>> i did,
> >>>
> >>> map uc, @months
> >>>
> >>> that's not it
> >>>
> >>> -- vish
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On 27 July 2011 10:25, Gaal Yahas <[email protected]> wrote:
> >>> > Normalize case on the months. Either uc @months (say, with map) or
> $t{lc
> >>> > $1}
> >>> > in the substitution.
> >>> > On Wed, Jul 27, 2011 at 12:18 PM, Avishalom Shalit <
> [email protected]>
> >>> > wrote:
> >>> >>
> >>> >> well, here's another conundrum ,
> >>> >> $t{$1}
> >>> >> $t{"$1"}
> >>> >> and event
> >>> >> $t{"OCT"}
> >>> >>
> >>> >> don't work
> >>> >>
> >>> >> $t gets parsed as a scalar (even with use strict; , (inside
> >>> >> "BEGIN{}", am I doing this right? ))
> >>> >> to get it to work i had to use $a = \%t,
> >>> >> $a->{"OCT"}
> >>> >>
> >>> >> any insights?
> >>> >> (except stop using one-liners?)
> >>> >>
> >>> >> -- vish
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >>
> >>> >> On 26 July 2011 19:30, Gaal Yahas <[email protected]> wrote:
> >>> >> > Change the substitution to use
> >>> >> > $t{"$1"}
> >>> >> >
> >>> >> > instead of
> >>> >> > $t{\1}
> >>> >> > In general you should avoid sed-style backreferences in
> >>> >> > substitutions.
> >>> >> > BTW whenever things are acting up in Perl the first thing you
> should
> >>> >> > do
> >>> >> > is
> >>> >> > turn on strict and warnings. This is the case in one-liners, too.
> >>> >> > $ perl -wle 'print oct'
> >>> >> > Use of uninitialized value $_ in oct at -e line 1.
> >>> >> > 0
> >>> >> >
> >>> >> >
> >>> >> > On Tue, Jul 26, 2011 at 9:16 PM, Avishalom Shalit
> >>> >> > <[email protected]>
> >>> >> > wrote:
> >>> >> >>
> >>> >> >> yes, it was a nasty one,
> >>> >> >>
> >>> >> >> echo 'a'b'c'
> >>> >> >> abc
> >>> >> >>
> >>> >> >>
> >>> >> >> or more to the point
> >>> >> >>
> >>> >> >> echo 'a a a' b b b 'c c c'
> >>> >> >> a a a b b b c c c
> >>> >> >>
> >>> >> >>
> >>> >> >> ---
> >>> >> >> also thanks
> >>> >> >> qw is indeed the good solution,
> >>> >> >>
> >>> >> >> ---
> >>> >> >>
> >>> >> >> but while I am on the air,
> >>> >> >> one more question,
> >>> >> >>
> >>> >> >> this was part of a preprocessing script to change dates into a
> nicer
> >>> >> >> numerical format (quicker on large files than handling text in
> >>> >> >> matlab)
> >>> >> >>
> >>> >> >> inside the loop i had
> >>> >> >> s/(?<=X)(...)(?=X)/$t{\1}/e
> >>> >> >>
> >>> >> >> but that doesn't work
> >>> >> >> it gives
> >>> >> >> SCALAR(0x105354f8)
> >>> >> >> after wasting too many minutes, i fell back on matlab,
> >>> >> >>
> >>> >> >>
> >>> >> >> but let me leave this open
> >>> >> >> how could i get this to work,
> >>> >> >> (or conversely what would you do to change 11-JUN-2011 to
> 11-6-2011
> >>> >> >> etc. )
> >>> >> >>
> >>> >> >> -- vish
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >>
> >>> >> >> On 26 July 2011 19:05, Gaal Yahas <[email protected]> wrote:
> >>> >> >> > Sorry, I meant the *single* quotes never reached perl.
> >>> >> >> >
> >>> >> >> > On Tue, Jul 26, 2011 at 9:04 PM, Gaal Yahas <[email protected]>
> >>> >> >> > wrote:
> >>> >> >> >>
> >>> >> >> >> The double quotes never reached perl. In both cases, you are
> >>> >> >> >> protecting
> >>> >> >> >> your oneliner from your shell with single quotes, so when you
> >>> >> >> >> reached
> >>> >> >> >> 'jan',
> >>> >> >> >> the "first" delimiter around that actually stopped
> shellquoting.
> >>> >> >> >> To get around this kind of thing use Perl's flexible quote
> >>> >> >> >> operators.
> >>> >> >> >> Eg.,
> >>> >> >> >> perl -MData::Dumper -e '@months = qw(jan feb mar apr ....);
> >>> >> >> >> ...and
> >>> >> >> >> so
> >>> >> >> >> on'
> >>> >> >> >>
> >>> >> >> >> On Tue, Jul 26, 2011 at 8:47 PM, Avishalom Shalit
> >>> >> >> >> <[email protected]>
> >>> >> >> >> wrote:
> >>> >> >> >>>
> >>> >> >> >>> the difference is the double quotes in october.
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>> -----
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>> $ perl -MData::Dumper -e
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> '@months=('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');@t{@months
> }=1..12;print
> >>> >> >> >>> Dumper(\%t)'
> >>> >> >> >>> $VAR1 = {
> >>> >> >> >>> 'feb' => 2,
> >>> >> >> >>> 'may' => 5,
> >>> >> >> >>> 'mar' => 3,
> >>> >> >> >>> 'dec' => 12,
> >>> >> >> >>> 'jan' => 1,
> >>> >> >> >>> 'aug' => 8,
> >>> >> >> >>> 'sep' => 9,
> >>> >> >> >>> '0' => 10,
> >>> >> >> >>> 'jun' => 6,
> >>> >> >> >>> 'nov' => 11,
> >>> >> >> >>> 'apr' => 4,
> >>> >> >> >>> 'jul' => 7
> >>> >> >> >>> };
> >>> >> >> >>>
> >>> >> >> >>> $ perl -MData::Dumper -e
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>>
> '@months=('jan','feb','mar','apr','may','jun','jul','aug','sep',"oct",'nov','dec');@t{@months
> }=1..12;print
> >>> >> >> >>> Dumper(\%t)'
> >>> >> >> >>> $VAR1 = {
> >>> >> >> >>> 'feb' => 2,
> >>> >> >> >>> 'may' => 5,
> >>> >> >> >>> 'mar' => 3,
> >>> >> >> >>> 'dec' => 12,
> >>> >> >> >>> 'jan' => 1,
> >>> >> >> >>> 'aug' => 8,
> >>> >> >> >>> 'sep' => 9,
> >>> >> >> >>> 'jun' => 6,
> >>> >> >> >>> 'nov' => 11,
> >>> >> >> >>> 'apr' => 4,
> >>> >> >> >>> 'oct' => 10,
> >>> >> >> >>> 'jul' => 7
> >>> >> >> >>> };
> >>> >> >> >>>
> >>> >> >> >>>
> >>> >> >> >>> -- vish
> >>> >> >> >>> _______________________________________________
> >>> >> >> >>> Perl mailing list
> >>> >> >> >>> [email protected]
> >>> >> >> >>> http://mail.perl.org.il/mailman/listinfo/perl
> >>> >> >> >>
> >>> >> >> >>
> >>> >> >> >>
> >>> >> >> >> --
> >>> >> >> >> Gaal Yahas <[email protected]>
> >>> >> >> >> http://gaal.livejournal.com/
> >>> >> >> >
> >>> >> >> >
> >>> >> >> >
> >>> >> >> > --
> >>> >> >> > Gaal Yahas <[email protected]>
> >>> >> >> > http://gaal.livejournal.com/
> >>> >> >> >
> >>> >> >> > _______________________________________________
> >>> >> >> > Perl mailing list
> >>> >> >> > [email protected]
> >>> >> >> > http://mail.perl.org.il/mailman/listinfo/perl
> >>> >> >> >
> >>> >> >> _______________________________________________
> >>> >> >> Perl mailing list
> >>> >> >> [email protected]
> >>> >> >> http://mail.perl.org.il/mailman/listinfo/perl
> >>> >> >
> >>> >> >
> >>> >> > --
> >>> >> > Gaal Yahas <[email protected]>
> >>> >> > http://gaal.livejournal.com/
> >>> >> >
> >>> >> > _______________________________________________
> >>> >> > Perl mailing list
> >>> >> > [email protected]
> >>> >> > http://mail.perl.org.il/mailman/listinfo/perl
> >>> >> >
> >>> >> _______________________________________________
> >>> >> Perl mailing list
> >>> >> [email protected]
> >>> >> http://mail.perl.org.il/mailman/listinfo/perl
> >>> >
> >>> >
> >>> > --
> >>> > Gaal Yahas <[email protected]>
> >>> > http://gaal.livejournal.com/
> >>> >
> >>> > _______________________________________________
> >>> > Perl mailing list
> >>> > [email protected]
> >>> > http://mail.perl.org.il/mailman/listinfo/perl
> >>> >
> >>> _______________________________________________
> >>> Perl mailing list
> >>> [email protected]
> >>> http://mail.perl.org.il/mailman/listinfo/perl
> >>
> >>
> >> --
> >> Gaal Yahas <[email protected]>
> >> http://gaal.livejournal.com/
> >>
> >> _______________________________________________
> >> Perl mailing list
> >> [email protected]
> >> http://mail.perl.org.il/mailman/listinfo/perl
> >>
> >
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl
>
--
Gaal Yahas <[email protected]>
http://gaal.livejournal.com/
_______________________________________________
Perl mailing list
[email protected]
http://mail.perl.org.il/mailman/listinfo/perl