http://www.perlmonks.org?node_id=1172899


in reply to Re^2: Declaring and checking content of variables with consecutive names
in thread Declaring and checking content of variables with consecutive names

That approach would suffer from exactly the same problems as consecutively enumerated scalar variables. Perl has arrays of arrays so this is easily avoided by having just one single outer array each of whose elements are themselves an array. That way your code could declare just one @arr and then index into it for individual subarrays or within them for individual values.

  • Comment on Re^3: Declaring and checking content of variables with consecutive names
  • Download Code

Replies are listed 'Best First'.
Re^4: Declaring and checking content of variables with consecutive names
by rflesch (Novice) on Sep 29, 2016 at 09:37 UTC
    Thank you very much, I get your point regarding the two-dimensional array. On a related note, how would you store data to disk into consecutively named files? I would typically use a rootstring (something like $rootStr = 'dataFile' in Perl) and a counter $j, increment the counter in a loop, and print "$rootStr . $j" into a string "$fileNameString". Then I would want to name the file according to the contents of "$fileNameString". I understand, however, this is strongly discouraged in the Perl community. What approach would be better to make consecutively named files, using Perl?
      I understand, however, this is strongly discouraged in the Perl community.

      If I've understood your description correctly, there should be no discouragement at all to this. I assume you mean:

      my $fileroot = 'foo'; for my $j (0..999) { my $filename = $fileroot . $j; open (my $out, '>', $filename) or die "Cannot open file $filename fo +r writing: $!"; print $out "Hello world!\n"; close $out; }

      which seems a perfectly feasible way of achieving 1000 consecutively numbered files in one directory.

        Thank you again, hippo. Your code is exactly what I should have written in my reply, instead of merely describing my intentions. I used the word "discouraged" because I understood it is alway considered bad practice to put the name of a variable (i.e. the filename) into another variable.