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