[Chicago-talk] messy scalar into an array.

Warren Lindsey warren.lindsey at gmail.com
Tue Mar 2 12:38:38 PST 2010


Which columns do you want?  You could just work backwards from the end
of the array.  That would always return the fax filename, foloowed by
time, then what I suspect is callerid?

On Tue, Mar 2, 2010 at 12:42 PM, Richard Reina
<richard at rushlogistics.com> 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
>
> Chicago.pm chatter <chicago-talk at pm.org> wrote:
>
> I have no idea what your faxstat -r output looks like, but why no collapse
> all of the white space down to single spaces, then you can split on the
> singles space:
>
> $line =~ s/\s+/ /g;
>
> then you can split on the single space.
>
>   DB<3> $line = 'a b  c   d     e       f';
>   DB<4> $a=$line
>   DB<5> $a =~ s/\s+/ /g;
>   DB<6> p $a
>  a  b  c  d  e  f
>   DB<7> @a=split(" ", $a);
>   DB<8> x @a
> 0  'a'
> 1  'b'
> 2  'c'
> 3  'd'
> 4  'e'
> 5  'f'
>
>
> ydy
>
> On Tue, Mar 2, 2010 at 8:46 AM, Richard Reina <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
>> http://mail.pm.org/mailman/listinfo/chicago-talk
>
>
>
> --
> I take the "Shhhh" out of IT - ydy
>
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk
>


More information about the Chicago-talk mailing list