You can use symbolic references if you switch off "strict refs":
update: you can only refer to GLOBALs with symbolic references. (update2: here's the relevant documentation in perlref) That's why that code still won't work. Here's a working version:for (1..3) { no strict 'refs'; my $ref = \${'str'.$_}; # this creates a hard reference VIA a symb +olic reference # or: my $ref = "str$_"; # this is a purely symbolic reference, +access is the same as above print "The string is $$ref"; }
#!/usr/bin/perl -l use warnings; use strict; our $str1 = qq[A-M o'Foo']; our $str2 = qq[.,rtyu_'']; our $str3 = qq[$<%^]; our $str4 = qq[this works]; my $ref4 = \$str4; print $$ref4; # works as expected for (1..3) { no strict 'refs'; my $ref = \${'str'.$_}; print "The string is $$ref"; }
Note that in your example using a simple array would be much easier, less error-prone and more efficient. Symbolic references are almost only useful these days for creating subroutines / packages at runtime (basically, wherever the only alternative is to use eval STRING).
updated again, added some comments
In reply to Re: Variable Names and References
by Joost
in thread Variable Names and References
by chakram88
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |