Rod Za <[EMAIL PROTECTED]> wrote:

: I'm trying to do a function that load all the jobs from
: the printers on systems (Unix), and this function
: returns a hash that has the printer name, the number of
: jobs and an array that got another hash with the names
: of job, owner jobs, date of the job.
: 
: I thinks something like this:
: 
: my %hash = ( printer_name => 'PRINTER NAME',
:              n_jobs => 'NUMBER OF JOBS',
:              jobs_name => [EMAIL PROTECTED],
: )
: 
: where @jobs = a hash with job_name, job_owner and job_date
: 
: so i make this code:
: 
: _BEGIN_
: #!/usr/bin/perl
: use warnings;
: use strict;
: use Data::Dumper;
: sub lst_job{
:         my $printer = shift;
:         my @lpstat = `lpstat -P $printer`;
:         my %job;

    %job is only needed inside the 'if' block inside the
loop.

:         my @jobs;
:         foreach (@lpstat){
: 
: if(/^$printer\-(\d+)\s+(\w+)\s+(\d+)\s+\w+\s(\d+\s\w+\s\d+\s\d

    my %job;

:                   {2}:\d{2}:\d{2})/){ $job{job_name} =
:                   sprintf("d%05d-001",$1); $job{job_owner} = $2;
:                   $job{job_date} = $4;
:          }
:          push(@jobs,\%job);

    We really don't need %job at all:

    my @jobs;
    foreach ( @lpstat ) {

        next unless
            /^
                \Q$printer\E-
                (\d+)\s+
                (\w+)\s+\d+\s+\w+\s
                (\d+\s\w+\s\d+\s\d{2}:\d{2}:\d{2})
            /ox;

        push @jobs, {
            job_name    => sprintf 'd%05d-001', $1,
            job_owner   => $2,
            job_date    => $3,
        };
    }

HTH,

Charles K. Clarkson
-- 
Mobile Homes Specialist
254 968-8328


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to