here is a small snippet of code(LABEL1) which appears to remove a comma
which lies between two double quotes. I run it and and display output and the
one line of code which does have the comma is cleaned up.
In LABEL2 , is a snippet of code which does not work, but in all
appearances is the same as my small snippet of code.
The working code is AS 5.8.3 on Windows XP while the the failing is on
Sun and is also 5.8.3.
I am receiving some data and and need to clean up and also split. I
prefer to not have to load any type of csv handler and works for the most part.
I don't see the difference in the code other than two different systems.
Note: Moved this same code over ( didn't occur to try it, but head must
be stuck). It runs and removes the , from within the double quotes.
Has to be something simple that I am missing. Though been doing Perl
for quite a while, never really been good at the regex processing.
Thanks.
Wags ;)
=========================================================================================================================
LABEL1:
#!perl
use strict;
use warnings;
my $MyIn = 0;
my $MyOut = 0;
my $MyHldData;
my $MyWrkFld;
my $MyWrkFldUpd;
while ( <DATA> ) {
chomp;
s/\r//g;
next if ( /^\s*$/ );
my $MyHldData = $_;
if ( /"/ ) {
printf "*1a* Looking at line with quotes\n";
while ( /("[^"]+")/ ) {
$MyWrkFld = $1;
printf "*1* <%s>",
$1;
$MyWrkFldUpd = $MyWrkFld;
if ( $MyWrkFld =~ /,/ ) {
printf "<--Comma hit!!";
$MyWrkFldUpd =~ s/[,"]//g;
s/$MyWrkFld/$MyWrkFldUpd/g;
}
else {
$MyWrkFldUpd =~ s/"//g;
s/$MyWrkFld/$MyWrkFldUpd/g;
}
printf "\n";
}
}
else {
printf "No quotes in line %d\n",
$.;
next;
}
printf "ln:<%5d>\nor:<%s>\nmd:<%s>\n",
$.,
$MyHldData,
$_
}
__DATA__
2006-02-18 12:00EE,"TBUTHGHN - GGTT","TEN DIGGB","TEN DIGGB","FHEZGG PEINT
TD","7077 CBNTBLIDETGD GEY",2006-02-14
12:00EE,15,"10:05","0152785","2737526",1,1250,10,"892913494",1,25
2006-02-18 12:00EE,"TBUTHGHN - GGTT","TEN DIGGB","TEN DIGGB","EETGH
EGCHENICEL","7840 BELBBE EVG",2006-02-15
12:00EE,16,"11:27","0107405","2846954",1,1167,3,"916708540",1,25
2006-02-18 12:00EE,"TBUTHGHN - GGTT","TEN DIGGB","TEN DIGGB","EETGH
EGCHENICEL","7840 BELBBE EVG",2006-02-15
12:00EE,17,"13:47","0107405","2846954",1,456,1,"916708557",1,25
2006-02-18 12:00EE,"TBUTHGHN - GGTT","TEN DIGGB","TEN DIGGB","NEVEL DGPBT LGVGL
HGPEIH EGGNT","N46433 FLGGT TT, BLDG 661-3",2006-02-16
12:00EE,18,"11:40","0164109","2500058",1,529,1,"1078754644",1,25
==================================================================
LABEL2:
....
INPUTTP: while (<MYFILEIN>) {
chomp;
$in++;
s/\r//g;
next if ( /^\s*$/ ); # bypass blank lines
if ( ! /,(\d+)$/ ) {
printf "Expecting a csv line ending with the total number of times
associated with\n";
printf "a terminal, but did not get a hit!\n";
printf "Data(%d):\<%-s>\n",
$.,
$_;
diet(5, $MyFileIn);
}
$MyDtlCnt = $1;
undef @MyWorka;
undef @MyUnSortedData;
if ( /"/ ) {
printf "*1a* Looking at line with quotes\n";
while ( /("[^"]+")/ ) {
$MyWrkFld = $1;
$MyWrkFldUpd = $MyWrkFld;
if ( $MyWrkFld =~ /,/ ) {
$MyWrkFldUpd =~ s/[,"]//g;
s/$MyWrkFld/$MyWrkFldUpd/g;
}
else {
$MyWrkFldUpd =~ s/"//g;
s/$MyWrkFld/$MyWrkFldUpd/g;
}
}
}
.....
*******************************************************
This message contains information that is confidential
and proprietary to FedEx Freight or its affiliates.
It is intended only for the recipient named and for
the express purpose(s) described therein.
Any other use is prohibited.
*******************************************************
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>