----- Original Message ----- 
From: <[EMAIL PROTECTED]>
Newsgroups: perl.beginners
To: <[EMAIL PROTECTED]>
Sent: Tuesday, July 13, 2004 6:13 PM
Subject: sort of previously ask, but it really a newie


> All,
>
> the data below is my end result from my code below, but I am wondering and
> trying to find a better way to print this from an array that may be
> populated with only 1 element or 39 elements?
> as you can see there is only 18 elements, but I cannot have 39 print lines
> if an array is not populated w/39 elements, right?  So I opted for the
> line highlighted to try and print all elements.  The reasoning is if I
> have a file that has max 40 lines in it (1-40) I will need to print all 40
> and anywhere in between 1-40 so instead of having 39 print lines will the
> print map work with my necessary syntax characters; -w 'barcode= or ' ?
> I could have the E strings be $_....   thinking to myself....  ; ? )
>
> thank you, !
>
>
> edm01:/usr/local/bin/perld>> perl traverse_array.pl testtapes
> -w 'barcode=E00085 or barcode=E00086 or barcode=E00096 or barcode=E00184'
> -w 'barcode=E00245 or barcode=E00271 or barcode=E00293 or barcode=E00351'
> -w 'barcode=E00524 or barcode=E00584 or barcode=E00585 or barcode=E00586'
> -w 'barcode=E00587 or barcode=E00588 or barcode=E00589 or barcode=E00654'
> -w 'barcode=E00702 or barcode=E00771 or barcode=E00876'
>
>
> Here is my code:
>
>
> #!/usr/local/bin/perl -w
> use strict;
> open (FH,"/usr/local/bin/perld/derektapes") or die "cannot open FH: $!
> \n";
> my @a=();
> my $i=0;
> my $ct=0;
> my $or_string=" or ";
> my $w_param="-w '";
> my $b_param="barcode=";
> while (<FH>) {
>         chomp $_;
>         $a[$i]=$_;
>         $i++;
> }

You can replace that while loop with:
chomp(my @a = <FH>);

> #               if ( $ct == 0 ) {
>         #       print map {$_, "\n"} @a;

?

>                 print $w_param; print $b_param; print $a[0];
>                 print $or_string;print $b_param; print $a[1];
>                 print $or_string;print $b_param; print $a[2];
>                 print $or_string;print $b_param; print "$a[3]'\n";
>
>                 print $w_param; print $b_param; print $a[4];
>                 print $or_string; print $b_param; print $a[5];
>                 print $or_string; print $b_param; print $a[6];
>                 print $or_string; print $b_param; print "$a[7]'\n";
>
>                 print $w_param; print $b_param; print $a[8];
>                 print $or_string; print $b_param; print $a[9];
>                 print $or_string; print $b_param; print $a[10];
>                 print $or_string; print $b_param; print "$a[11]'\n";
>
>                 print $w_param; print $b_param; print $a[12];
>                 print $or_string; print $b_param; print $a[13];
>                 print $or_string; print $b_param; print $a[14];
>                 print $or_string; print $b_param; print "$a[15]'\n";
>
>                 print $w_param; print $b_param; print $a[16];
>                 print $or_string; print $b_param; print $a[17];
>                 print $or_string; print $b_param; print "$a[18]'\n"
>

Instead of using multiple lines that do the same thing, you might want to
try the code below.

while (@a) {
    my @output = ();
    print "-w ";
    for (1..4) {
       push @output, "barcode=" . shift @a;
       last unless @a;
    }
    print join(" or ", @output), "\n";
}

Chris



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