Wow! That's a lot to take in, but consider it, and I'll get back
to you with the results of my considerations.
Thanks much.
Bill J.
__________________________________________________
On Mon, 22 Dec 2003, James Edward Gray II wrote:
> On Dec 21, 2003, at 10:47 PM, Bill Jastram wrote:
>
> > James:
> >
> > Thanks for the sample and I agree it does work.
> >
> > How can I create an array of just the first names for a file?
> >
> > This is what I have so far:
>
> Let's take a look at what you have first.
>
> You're missing two very important lines right here:
>
> use strict;
> use warnings;
>
> These promise Perl you'll play by the good programmer rules, so it can
> help you find problems. That's a good deal.
>
> > open (A, "testing.txt");
>
> Always check if an open succeeded. There are plenty of reasons it may
> not.
>
> Also, you'll generally stay more sane if you use better names for file
> handle/variables than A.
>
> open CONTACTS, 'testing.txt' or die "File error: $!";
>
> > @A = <A>;
>
> my @A = <CONTACTS>;
>
> We're reading the whole file here, but you only need one line at a
> time. We can do better.
>
> > foreach ($n = 0; $n<10; $n++)
> > {
> >
> > #Split each record into its fields
> > $item = $A[$n];
>
> These two lines can be simplified:
>
> for my $item (@A[0..9]) { # if you really only wanted the first ten
> lines
>
> # or...
>
> for my $item (@A) { # if you wanted them all
>
> > @addArray = split( "\t", $item); #Splits each line into its tab fields
> > $first = $addArray[0]; #Breaks down array into proper fields
> > $last = $addArray[1];
> > $add = $addArray[2];
> > $city = $addArray[3];
> > $state = $addArray[4];
> > $zip = $addArray[5];
>
> my($first, $last, $add, $city, $state, $zip) = split /\t/, $item;
>
> > printf "\n%s %s\n%s\n%s %s %s\n", $first, $last, $add, $city, $state,
> > $zip;
> > _________________________________________________
>
> Let's try something simpler:
>
> #!/usr/bin/perl
>
> # use with:
> # perl this_script_name testing.txt
>
> use strict;
> use warnings;
>
> while (<>) { # process args line by line
> printf "\n%s %s\n%s\n%s %s %s\n", split /\t/, $_;
> }
>
> __END__
>
> > What it seems I need now is to create arrays for each of the fields,
> > so I
> > can proceed to make three columns of labels.
>
> That's a little trickier, but let's see if we can keep it pretty simple:
>
> #!/usr/bin/perl
>
> # use with:
> # perl this_script_name testing.txt
>
> use strict;
> use warnings;
>
> my(@col1, @col2, @col3);
>
> my $col = 1;
> while (<>) {
> if ($col == 1) { push @col1, $_ }
> elsif ($col == 2) { push @col, $_ }
> else {
> push @col3, $_;
> $col = 1;
> next;
> }
> $col++;
> }
>
> # that should load @col1, @col2 and @col3
> # can you come up with an output loop for them that goes here?
>
> __END__
>
> Does that help you along?
>
> James
>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>