[Chicago-talk] messy scalar into an array.

Brian Katzung briank at kappacs.com
Tue Mar 2 15:34:23 PST 2010


Without the actual data in hand, I'm guessing there's extra white space at the beginning or end of line not being matched. You might try the regex unanchored and see if it makes a difference.

  - Brian

"Richard Reina" <richard at rushlogistics.com> wrote:

>Hi Brian,
>
>I really appreciate the reply.  It looks promising, but it does not seem to trap any data.  If I put a print $mode . " " . $ident . " " . $file . "\n";
>after the matching statement nothing matches.  
>
>
>---- Chicago.pm chatter <chicago-talk at pm.org> wrote:
>>
>> As an alternative to fixed fields, how about:
>> 
>> use strict;
>> my @received = `faxstat -r`;
>> my $line;
>> my ($mode, $ident, $time, $file);
>> 
>> foreach $line (@received) {
>>     if (($mode, undef, undef, $ident, $time, $file) =
>>       ($line =~ 
>> /^(\S+)\s+(\d+)\s+(\d+)\s+(\S.*\S)?\s+(..:..)\s+(.*\.tif)$/) {
>>         # do whatever
>>     }
>> }
>> 
>> This should also deal with skipping irrelevant (fax title?) lines.
>> 
>>   - Brian
>> 
>> Richard Reina wrote:
>> > Actually, I believe all the suggestion would work until I realized 
>> > that every now in then there is a column that is completely blank and 
>> > then it throw everything off. Here is an example of the output:
>> >
>> > -rw---- 2  14  <UNSPECIFIED> 14:53 fax00003459.tif
>> > -rw---- 1  14  501 443 9393         14:58 fax00003460.tif
>> > -rw---- 1  14                              15:01 fax00002470.tif
>> >
>> > That occasional empty column messes it up.  Is there a way to 
>> > accommodate for that?
>> >
>> > Sorry, for the added wrinkle.  I had not noticed that before.
>> >
>> > Richard
>> > *
>> > *
>> >
>> >
>> >     On Tue, Mar 2, 2010 at 8:46 AM, Richard Reina
>> >     <richard at rushlogistics.com <mailto:richard at rushlogistics.com>> wrote:
>> >
>> >         I'm sorry for asking what likely should be a simple question
>> >         but after spending a fair amount of time playing with qw(),
>> >         split(), join(), etc. I still have not figured it out.
>> >
>> >         I have some fairly messy system output which I have managed to
>> >         isolate into a scalar with
>> >
>> >         use strict;
>> >         my @received = `faxstat -r`;
>> >
>> >         I can't figure out how to neatly get this into an array so I
>> >         can get the output into a database table;
>> >
>> >         I've gotten this far;
>> >
>> >         my $line;
>> >         my @fax;
>> >
>> >         foreach $line (@received) {
>> >
>> >            if (substr($line,0,5) eq "-rw---") { # make sure it's an
>> >         actual fax
>> >                                                 # and not the title of
>> >         the output
>> >                chomp($line);
>> >            }
>> >         }
>> >
>> >         $line is exactly what I want but it's in the form of a scalar;
>> >          When I try to split it up into elements of an array with
>> >         @fax=split("", $line); it does not work due to all the back to
>> >         back white spaces.  If anyone can help me out with a better
>> >         way to do this I would really appreciate it.
>> >
>> >         Thanks,
>> >
>> >         Richard
>> >         _______________________________________________
>> >         Chicago-talk mailing list
>> >         Chicago-talk at pm.org <mailto:Chicago-talk at pm.org>
>> >         http://mail.pm.org/mailman/listinfo/chicago-talk
>> >
>> >
>> 
>> -- 
>> Brian Katzung, Kappa Computer Solutions, LLC
>> Leveraging UNIX, GNU/Linux, open source, and custom
>> software solutions for business and beyond
>> Phone: 877.367.8837 x1  http://www.kappacs.com
>> 
>> 
>> _______________________________________________
>> Chicago-talk mailing list
>> Chicago-talk at pm.org
>> http://mail.pm.org/mailman/listinfo/chicago-talk
>> 
>_______________________________________________
>Chicago-talk mailing list
>Chicago-talk at pm.org
>http://mail.pm.org/mailman/listinfo/chicago-talk
>
>

--
Brian Katzung, Kappa Computer Solutions, LLC
Leveraging UNIX, GNU/Linux, open source, and custom
software solutions for business and beyond
Phone: 877.367.8837 x1  http://www.kappacs.com
Sent from my phone. Please excuse my brevity.


More information about the Chicago-talk mailing list