On Sun, Jun 08, 2003 at 11:41:26PM -0500 Jerry Preston wrote:

> I am not sure if this can be done or not, but I want to create a counter on
> the fly so to speak.
> 
>     foreach $id ( @IDS ) {
>         $cnt = "$id"."_cnt";
>         $cnt++;
>     }
> 
> All I get is "item_cnt".  Is there a way to do this?

I can only assume what you want. It looks suspiciously as though you
wanted to create new variables with the name "$id"."_cnt". You can do
that with symbolic references (I know that some would now want me to
shred into pieces):

    foreach $id (@IDS) {
        $cnt = "$id"."_cnt";
        $$cnt++;
    }

This is _not_ advisable, wont work with properly declared lexcical
variables (variables declared with my() can't be accessed through a
symbolic reference) and will fail if you 'use strict;'. To do it
properly better create a hash:

    my %cnt;    # all your counters in here
    foreach my $id (@IDS) {
        $cnt{ $id . "_cnt" }++;
    }

Doing it with symbolic references is apt to fail at some later point and
you will then have a very bad time at debugging your scripts. Better
leave your fingers off that and use a hash (or even array in this case).

Tassilo
-- 
$_=q#",}])!JAPH!qq(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus})(rekcah{lrePbus})(lreP{rehtonabus})!JAPH!qq(rehtona{tsuJbus#;
$_=reverse,s+(?<=sub).+q#q!'"qq.\t$&."'!#+sexisexiixesixeseg;y~\n~~dddd;eval


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

Reply via email to