Rob Dixon wrote:

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:

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`;

Not the same thing.  Possibly:

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

Or:

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

Or:

my @ids = `mailq` =~ /^\w\S*/mg;




John
--
Those people who think they know everything are a great
annoyance to those of us who do.        -- Isaac Asimov

--
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