Re: [Arsperl-users] Parse arx file
Brought to you by:
jeffmurphy
|
From: Vaughan, M. <Mar...@ca...> - 2008-01-22 22:57:19
|
Brad,
I was able to successfully run this on Windows using ActiveState Perl.
I did get a seg fault when running this on a Solaris 9 box using Perl
5.8.5. I followed through the code and
Text::Balanced::extract_delimited, line 135, provides the seg fault.
In translating the variables, here is the pattern match that is failing:
$$textref =3D~ m/\G(\s*)((?:\"(?:[^\\\"]*(?:\\.[^\\\"]*)*)\"))/gc
The $textref variable is a scalar pointing to the input line. Only
guessing here, but I wonder if the pattern match is running out of
memory.
Here is a sample routine which gives the desired response instead of
using Text::Balanced::extract_delimited. It runs fine on my sun box
using the input records you gave me:
sub extractDelimited {
my( $line ) =3D @_;
if( $line !~ /^"/ ) {
return( undef, $line );
}
my $val;
my $remainder;
$line =3D~ /[^\\]"/g;
my $pos =3D pos($line);
print $pos, '/', length( $line ), "\n";
if( defined( $pos )) {
return( substr( $line, 0, $pos ), substr( $line, $pos ));
}
return( undef, $line );
}
Try calling this routine instead of Text::Balanced::extract_delimited.
Also, the value in question is $ret[10], not $ret[9].
HTH,
Mark Vaughan
TTS Development
Comcast Cable Corporation
720.268.8591
-----Original Message-----
From: ars...@ar...
[mailto:ars...@ar...] On Behalf Of Brad O'Hara
Sent: Sunday, January 20, 2008 6:08 AM
To: ARSperl User Discussion
Subject: Re: [Arsperl-users] Parse arx file
Mark,
Thanks for the help. Here is the code I am using that seg faults =20
when I try it.
#!/usr/bin/perl
use Text::Balanced qw( extract_delimited );
$line =3D `/usr/bin/tail -1 /home/arsrv/bin/perlmods/help.txt`;
while ( length($line) ) {
if( substr($line,0,1) eq '"' ) {
( $val, $line ) =3D extract_delimited( $line, '"' );
last if defined($line) && !defined($val);
$val =3D~ s/^"//;
$val =3D~ s/"$//;
$val =3D~ s/\\\\/\\/g;
$val =3D~ s/\\r//g;
$val =3D~ s/\\n/\n/g;
$val =3D~ s/\\"/"/g;
}
else {
$line =3D~ s/(\S+)//;
$val =3D $1;
}
push @ret, $val;
$line =3D~ s/\s*//;
}
print ">$ret[9]<\n";
exit;
I will tried a new export with the same result. I placed a new arx =20
file at the address I gave you.
It contains the record before the problem record as well as headers.
Thanks again,
Brad
On Jan 20, 2008, at 12:26 AM, Mark Vaughan wrote:
> Brad,
> I took a look at your file.
>
> The first data record reads okay.
>
> The second data record reads okay in that the routine does not die. =20
> The
> problem is the tenth field (Scheduled Date, ID 536870921, type =20
> DATE). It is
> a 1,039,967 byte (after translation) character string. It is not a =20
> date
> field by any means.
>
> You may wish to regenerate your ARX file.
>
> HTH,
> Mark Vaughan
> 303.471.9987 (home)
> 303.601.4434 (mobile)
> -----Original Message-----
> From: ars...@ar...
> [mailto:ars...@ar...] On Behalf Of Brad O'Hara
> Sent: Saturday, January 19, 2008 6:28 PM
> To: ARSperl User Discussion
> Subject: Re: [Arsperl-users] Parse arx file
>
> Mark,
>
> It is a very large record. I placed it at
> http://remedy.cns.ufl.edu/arsperl
> Any help greatly appreciated.
>
> Brad
>
> On Jan 19, 2008, at 12:03 PM, Mark Vaughan wrote:
>
>> What's the record look like?
>> Please send an ARX file with the header, one good record, and the
>> record
>> that does not process.
>>
>> Thanks,
>> Mark Vaughan
>> 303.471.9987 (home)
>> 303.601.4434 (mobile)
>> -----Original Message-----
>> From: ars...@ar...
>> [mailto:ars...@ar...] On Behalf Of Brad O'Hara
>> Sent: Friday, January 18, 2008 8:29 AM
>> To: ARSperl User Discussion
>> Subject: Re: [Arsperl-users] Parse arx file
>>
>> Thilo,
>>
>> I've come upon a record the causes the following code to seg
>> fault. Do
>> you have any interest
>> in taking a look?
>>
>> Thanks,
>> Brad
>>
>> On Tuesday 13 November 2007 4:35 pm, Brad O'Hara wrote:
>>> Thanks! Certainly something I can work with!
>>>
>>> Brad
>>>
>>> On Tuesday 13 November 2007 3:01 pm, Thilo Stapff wrote:
>>>> Here's a subroutine that splits a line in ARX format to an array of
>>>> values. It works for the basic data types such as character, =20
>>>> integer
>> etc.
>>>> More complicated data like attachments, diary and currency would of
>>>> course need some further processing.
>>>>
>>>>
>>>> use Text::Balanced qw( extract_delimited );
>>>>
>>>>
>>>> sub splitArxLine {
>>>> my( $line ) =3D @_;
>>>> my @ret;
>>>> my $val;
>>>>
>>>> print "--------------------\n";
>>>> while( length($line) ){
>>>> if( substr($line,0,1) eq '"' ){
>>>> ( $val, $line ) =3D extract_delimited( $line, '"' );
>>>> last if defined($line) && !defined($val);
>>>> $val =3D~ s/^"//;
>>>> $val =3D~ s/"$//;
>>>>
>>>> $val =3D~ s/\\\\/\\/g;
>>>> $val =3D~ s/\\r//g;
>>>> $val =3D~ s/\\n/\n/g;
>>>> $val =3D~ s/\\"/"/g;
>>>>
>>>> print "<$val>\n";
>>>>
>>>> }else{
>>>> $line =3D~ s/(\S+)//;
>>>> $val =3D $1;
>>>> }
>>>> push @ret, $val;
>>>> $line =3D~ s/\s*//;
>>>> }
>>>>
>>>> return @ret;
>>>> }
>>>>
>>>>
>>>>
>>>> Regards,
>>>> Thilo
>>>>
>>>>
>>>>
>>>> Brad O'Hara wrote:
>>>>> Hi all,
>>>>>
>>>>> Anyone written a routine to parse a .arx file?
>>>>>
>>>>> Thanks,
>>>>> Brad
>>>>
>>>>
>>>>
>>
------------------------------------------------------------------------
-
>>>> This SF.net email is sponsored by: Splunk Inc.
>>>> Still grepping through log files to find problems? Stop.
>>>> Now Search log events and configuration files using AJAX and a
>>>> browser.
>>>> Download your FREE copy of Splunk now >> http://get.splunk.com/
>>>> _______________________________________________
>>>> Arsperl-users mailing list
>>>> Ars...@ar...
>>>> https://lists.sourceforge.net/lists/listinfo/arsperl-users
>>>>
>>>>
>>>
>>
>> --=20
>> Brad O'Hara E-mail: br...@uf...
>> IT Expert Voice: (352)392-2061
>> Computing and Networking Services Suncom: 622-2061
>> University of Florida Fax: (352)392-9440
>>
>>
------------------------------------------------------------------------
-
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> Arsperl-users mailing list
>> Ars...@ar...
>> https://lists.sourceforge.net/lists/listinfo/arsperl-users
>>
>>
>>
------------------------------------------------------------------------
-
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> Arsperl-users mailing list
>> Ars...@ar...
>> https://lists.sourceforge.net/lists/listinfo/arsperl-users
>>
>
>
>
------------------------------------------------------------------------
-
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Arsperl-users mailing list
> Ars...@ar...
> https://lists.sourceforge.net/lists/listinfo/arsperl-users
>
>
>
------------------------------------------------------------------------
-
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Arsperl-users mailing list
> Ars...@ar...
> https://lists.sourceforge.net/lists/listinfo/arsperl-users
>
------------------------------------------------------------------------
-
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Arsperl-users mailing list
Ars...@ar...
https://lists.sourceforge.net/lists/listinfo/arsperl-users
|