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

Reply via email to