John W. Krahn wrote:
> pa...@compugenic.com wrote:
>> I want to extract a list of postfix's queue id's.  The 'mailq' command
>> returns output as follows:
>>
>> --
>> 8C0597408D     2503 Tue Feb 17 16:15:34  ka...@domain.org
>>     (connect to bar-plate.com[209.62.20.192]:25: Connection refused)
>>                          staffo...@bar-plate.com
>>
>> 88E8E7409E 1881 Tue Feb 17 23:37:40 dia...@domain.org
>>     (connect to mail.fbig.com[70.68.160.253]:25: Connection timed out) 
>>                          persistencer5...@fbig.com
>> --
>>
>> right now I'm doing the following:
>>
>> my @ids;
>>
>> foreach (`mailq`) {
>>     next unless /^\w+/;
>>     chomp;
>>     push @ids, (split)[0];
>> }
>>
>>
>> I know it can be done with one line.  Here's what I've got so far:
>>
>> my @ids = map {chomp; (split)[0] if /^\w/} `mailq`;
> 
> You don't need chomp() because split() removes *all* whitespace, and 
> besides you are only using the first field.
> 
> 
>> This 'kinda' works, but it also adds a bunch of blank elements to the
>> @ids array.  What am I doing wrong?
> 
> 
> my @ids = map /^\w/ ? (split)[0] : (), `mailq`;

  my @ids = map /^(\w+)/, `mailq`;

Rob

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to