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