Re: converting code via regex



ok!

s/then//;

my $wordCNT = 0;
my ( @Word ) = /\.(\w+)/g;
foreach my $Word ( @Word) {

my %WordList = ( "footage" => "footage",
"qty" => "qty",
"total" => "total",
"totalcost" => "totalcost",
"count" => "count",
"weight" => "weight",
"estcost" => "estcost",
"cost" => "cost",
"totwgt" => "totwgt",
"wt_SLASH_ft" => "wt_SLASH_ft",
"tothigh" => "tothigh",
"wt_SLASH_each" => "wt_SLASH_each",
"wt_SLASH_sht" => "wt_SLASH_sht",
"c" => "c",
"w" => "w",
"dimension" => "dimension",
"freight" => "freight",
"onhand" => "onhand",
"ft_oh" => "ft_oh",
"vendor" => "vendor",
"ordered" => "ordered",
"recd" => "recd",
"ln_NO_" => "ln_NO_",
"item_NO_" => "item_NO_",
"amount" => "amount",
"price" => "price",
"wgt_ea" => "wgt_ea",
"priceea" => "priceea",
"unit" => "unit",
"um" => "um",
"u_SLASH_m" => "u_SLASH_m",
"dl_NO_" => "dl_NO_",
"pt_NO_" => "pt_NO_",
"d" => "d",
"p" => "p",
"sku_NO_" => "sku_NO_",
"invitem_NO_" => "invitem_NO_",
"i" => "i",
"pt_NO_" => "pt_NO_",
"sell" => "sell",
"invqty" => "invqty",
"description" => "description",
"t" => "t",
"qtyout" => "qtyout",
"qtyout" => "qtyout",
"wgtout" => "wgtout",
"pc" => "pc",
"uofm" => "uofm",
"baldue" => "baldue",
"ptyp" => "ptyp",
"po_NO_" => "po_NO_",
"ap_NO_" => "ap_NO_",
"fob" => "fob",
"product" => "product",
"onorder" => "onorder",
"qtyin" => "qtyin",
"wgtin" => "wgtin",
"invdate" => "invdate",
"sr" => "sr",
"city" => "city",
"name" => "name",
"pt" => "pt",
);

if( $WordList{ $Word } )
{
#print "$File, $Word*$#WordList*$WordList{ $Word }\n";

#print $_ if /\"N\" \) \)/i;

s/(\w)\.\b$WordList{ $Word }\b \);/$1\.$WordList{ $Word }\[
$1.L_NO_ \] \n/g if /get/;

s/(\w)\.\b$WordList{ $Word }\b/$1\.$WordList{ $Word }\[ $1.L_NO_
\]/g if /^\s+(\w)\./ && $wordCNT == 0 && !/$WordList{ $Word }\[/i;


s/(\w)\.\b$WordList{ $Word }\b/$1\.$WordList{ $Word }\[ $1.L_NO_
\].ToString\(\)/g if /sorts/ && $wordCNT > 0;
s/(\w)\.\b$WordList{ $Word }\b/$1\.$WordList{ $Word }\[ $1.L_NO_
\].ToString\(\)/g if( /= \"/ || /!= \"/ || /== \"/ ) && !/\[/ && !/\*
\w\./g;



s/(\w)\.\b$WordList{ $Word }\b /$1\.$WordList{ $Word }\[
$1.L_NO_ \].ToString\(\) /g if( /!= \"n\"/i && $wordCNT > 0 );

#print $_ if /\"N\" \) \)/i;

s/(\w)\.\b$WordList{
$Word }\b\s+==\s+\"(\w+)\"/utils\.IsMatch\( $1\.$WordList{ $Word }\[
$1.L_NO_ \].ToString\(\), \"$2\" \)/g if !/\.ToString/ && !/\* \w\./g;
s/(\w)\.\b$WordList{
$Word }\b\s+\!=\s+\"(\w+)\"/utils\.NotMatch\( $1\.$WordList{ $Word }\[
$1.L_NO_ \].ToString\(\), \"$2\" \)/g if !/\.ToString/ && !/\* \w\./g;


# s/(\w)\.\b$WordList{ $Word }\b\s+\)/$1\.$WordList{ $Word }\[
$1.L_NO_ \].ToString\(\) \)/g if !/\),/;

s/(\w)\.\b$WordList{ $Word }\b\.ToString/$1\.$WordList{
$Word }\[ $1.L_NO_ \]\.ToString/g;


s/(\w)\.\b$WordList{ $Word }\b\s+= /$1\.$WordList{ $Word }\[
$1.L_NO_ \] = /g;
s/(\w)\.\b$WordList{ $Word }\b\s+\)/$1\.$WordList{ $Word }\[
$1.L_NO_ \] \)/g if !/\),/ && $wordCNT == 0;



s/(\w)\.\b$WordList{ $Word }\b/float.Parse\( $1\.$WordList{
$Word }\[ $1.L_NO_ \].ToString\(\) \)/g if !/(\w)\.$WordList{ $Word }\[/;

# s/(\w)\.$WordList{ $Word };/float.Parse\( $1\.$WordList{
$Word }\[ $1.L_NO_ \].ToString\(\) \);/g;
# s/(\w)\.$WordList{ $Word } /float.Parse\( $1\.$WordList{
$Word }\[ $1.L_NO_ \].ToString\(\) \) /g;
# s/(\w)\.$WordList{ $Word }$/float.Parse\( $1\.$WordList{
$Word }\[ $1.L_NO_ \].ToString\(\) \);/g;

$wordCNT++;
}

}



"Dave Weaver" <zen13097@xxxxxxxxx> wrote in message
news:465301cd$0$31824$db0fefd9@xxxxxxxxxxxxxxxxx
On Tue, 22 May 2007 08:21:23 -0500, Jerry <jpreston@xxxxxxxxxxxxxxxxx>
wrote:
I am converting some old code:

$_ = " if (a.weight = '') and (a.w <> 'N') then"

to the following

$_ = "if ( a.weight[ a.L_NO_ ].ToString() == 0 ) and ( a.w <> 'N' )
then
^^^^^
How did '' become 0 ?

using

s/(\w)\.\b$WordList{ $Word }\b/$1\.$WordList{ $Word }\[ $1.L_NO_
\].ToString\(\)/g;

No need to escape most of that in the replacement part, because those
characters are only special in a regular expression (the left-hand
part of the s/// operator), not a plain string (the right-hand part).
Although I had to leave in the escaped [ otherwise perl assumes it's
part of the $WordList{} expression and tries to interpolate it.

Why does this not change the"a.w". I have a hash of key words that I
am
looping through

It works for me. If you'd shown a *short* but *complete* program that
illustrates your problem (as the posting guidelines for this group
suggest) we could have shown you what you did wrong.

#!/usr/bin/perl
use strict;
use warnings;

$_ = " if ( a.weight == 0 ) and ( a.w <> 'N' ) then";

my %WordList = ( foo => 'weight', bar => 'w' );

for my $Word ( qw(foo bar) ) {
s{(\w)\.\b$WordList{ $Word }\b}
{$1.$WordList{ $Word }\[ $1.L_NO_ ].ToString()}g;
}

print "$_\n";

Produces:

if ( a.weight[ a.L_NO_ ].ToString() == 0 ) and
( a.w[ a.L_NO_ ].ToString() <> 'N' ) then

Apart from the removal of the unneccessary back-whacks and the use of
{} as the delimiter (for better wrapping in this post), the s///
remains the same as your example.

I am looking for a finished product of

_$ = "if( ( a.weight[ a.L_NO_ ].ToString() == 0 ) && ( a.w[
a.L_NO_ ].ToString() != 'N' ) )"

What happened to the " then" at the end?



.



Relevant Pages

  • Re: A new theory with two postulates
    ... of the Earth twin, the traveling twin is moving, but from the ... the time between two *events* as observed between two observers. ... FoR2 doesn't need to determine dilation within FoR1 for FoR1 to measure ... measurement of L or m within FoR2 ...
    (sci.physics)
  • Re: A new theory with two postulates
    ... of the Earth twin, the traveling twin is moving, but from the ... the time between two *events* as observed between two observers. ... How does one witness a dilation of a single event? ...
    (sci.physics)
  • Re: A new theory with two postulates
    ... of the Earth twin, the traveling twin is moving, but from the ... the time between two *events* as observed between two observers. ... How does one witness a dilation of a single event? ...
    (sci.physics)
  • Re: A new theory with two postulates
    ... of the Earth twin, the traveling twin is moving, but from the ... the time between two *events* as observed between two observers. ... How does one witness a dilation of a single event? ...
    (sci.physics)
  • Re: A new theory with two postulates
    ... of the Earth twin, the traveling twin is moving, but from the ... straight-line path through spacetime between these two events. ... between two events that are both measured by two observers. ... The question is, in a symmetrical system, what type of dilation does ...
    (sci.physics)