Bobby wrote:
I'm trying to write a simple do until loop to print out the value of $strA0 through $striA3. What i'm doing is replacing the value of 0 through 3 in the $strA by joining two strings (my $strB = "strA" . $count;). Right now my script is printing $strB as below. How do i get perl to print the value of $strA0 through $strA3 inside of my do until loop? i.e.:

Desired Outcome:
VarB: A0
VarB: A1,b,c
VarB: A 2
VarB: A3,d,e

Current Outcome: VarB:strA0
VarB:strA1
VarB:strA2
VarB:strA3


#!/usr/bin/perl
use strict;
use warnings;

my $strA0="A0";
my $strA1="A1,b,c";
my $strA2="A2";
my $strA3="A3,d,e";

my $count = 0;
  until ($count == 4){
     my $strB = "strA" . $count;
    print "VarB:$strB\n";
  $count++;
}#end until loop

You are trying to use symbolic references. To make it work, you'd need to
- declare the $strAx variables with our() instead of my(),
- disable strictures ("no strict 'refs';"),
- dereference the strings: print "VarB:$$strB\n".

Please study the FAQ entry

    perldoc -q "variable name"

to find out why that's not a recommended approach. You probably ought to make use of a hash instead.

    my %strA = (
        0 => 'A0',
        1 => 'A1,b,c',
        2 => 'A2',
        3 => 'A3,d,e',
    );

    print "VarB:$strA{$_}\n" foreach 0..3;

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to