Rob,

thanks, that did the trick, now I see that the way to go was using a hash, rather than 
an array.

:) Pam

>>> "Rob Dixon" <[EMAIL PROTECTED]> 12/17/02 11:16 AM >>>
Pam

Something like this should work, as long as the date in the record is
irrelevant and you want to include the full path to the file as its name.

    #!/usr/bin/perl -w

    our %file = ();

    get_data();
    print "$_: $file{$_}\n" foreach (keys %file);

    #get data, split into date, and url
    sub get_data{

        open(IN, "/dept/unxmkt/bin/hits_news/data.txt")
                or die ("There is no file: $!\n");

        foreach (<IN>)
        {
            chomp;
            my ($date, $url) = split / /;
            $file{$url}++;
        }

        close IN;
    }

    #end get_data


HTH,

Rob
----- Original Message -----
From: "Pam Derks" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, December 17, 2002 4:54 PM
Subject: Re: problems with scalar(@array)


> my final goal is to loop through each filename and count how many times
each filename appears, example:
> archive/summer.html 2
> arts.html 2
> arttherapy.html 3.
>
>
> for right now, I'm just trying to loop through the array @url.
> Next step would be to compare whats in $line with what's in $url[$i] and
if it's different reset the counter...
>
> my understanding of scalar(@url) is that it should give me the total count
for the number of filenames.
> What I expected $i to do, was to keep increasting to 732 (as this is the
number of lines in the data.txt file)
>
> still confused,
> Pam
>
>
>
>
>
>
>
>
>
>
>
>
> ---------------------------
>  Hi Pam
>
> $i is incrementing. Yourloop starts with $i at zero, as shown by your
> trace. The print statement executes, $i is incremented to 1, your test $i
<
> $num is made and found to be false ($i == $num) so the loop executes.
>
> I'm not sure exactly what you're wanting. The line split(/ /, $line) will
> split each record on whitespace, so will return the list ('021211',
> 'archive/summer.html') for the first record. This will assign $date =
> '021211', @url = ('archive/summer.html'), a single-element list.
>
> If you're intending to split on the '/' path separator then I suggest
>
>    ($date, $url) = split(/ /, $line);
>    @url = split /\//, $url;
>
> which will give $date = '021211', $url = 'archive/summer.html', @url =
> ('archive', 'summer.html'). Is this what you want?
>
> Cheers,
>
> Rob
>
>
>
>
>
> ----- Original Message -----
> From: "Pam Derks" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, December 17, 2002 2:50 PM
> Subject: problems with scalar(@array)
>
>
> > Howdy,
> >
> > why isn't $i incrementing?
> >
> > here's sample of data file containing date and filename:
> > 021211 archive/summer.html
> > 021211 archive/summer.html
> > 021211 archive/tipsheet.html
> > 021211 ats.html
> > 021211 arts.html
> > 021211 arttherapy.html
> > 021211 arttherapy.html
> > 021211 arttherapy.html
> > 021211 award.html
> > 021211 award.html
> > 021211 award.html
> > 021211 award.html
> > 021211 bio.html
> > 021211 bio.html
> >
> > here's the code thus far:
> >
> >      1  #!/usr/bin/perl -w
> >      2
> >      3  get_data();
> >      4
> >      5  #get data, split into date, and url
> >      6  sub get_data{
> >      7
> >      8      open(IN, "/dept/unxmkt/bin/hits_news/data.txt") or die
("There
> is n
> > o file: $!\n");
> >      9
> >     10      open OUT, ">>/dept/unxmkt/bin/hits_news/log.txt") or die
("no
> cant write to out file $!\n");
> >     11
> >     12      my @url = ();
> >     13      my $line = 0;
> >     14      my $ate = 0;
> >     15      my $num = 0;
> >     16
> >     17      while ($line=<IN>) {
> >     18            chomp($line);
> >     19            ($date, @url)=split(/ /, $line);
> >     20
> >     21            $num = scalar(@url);
> >     22            print ("num = $num\n");
> >     23
> >     24            for ($i=0; $i<$num; $i++){
> >     25                  print ("$i = $url[$i]\n");
> >     26            }
> >     27
> >     28      }
> >     29
> >     30
> >     31
> >     32      close IN;
> >     33      close OUT;
> >     34
> >     35  } #end get_data
> >
> >
> >
> >
> > output:
> > num = 1
> > 0 = archive/summer.html
> > num = 1
> > 0 = archive/summer.html
> > num = 1
> > 0 = archive/tipsheet.html
> >
> > thanks for any help,
> > Pam
> >
> >
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to