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


in reply to array print outside loop

I might write your code this way (but note I haven't tested it).

use strict; use warnings; my $param_file = 'Params.txt'; open my $param_fh, '<', $param_file or die "Can't read '$param_file': $!"; my (@params, @charam); while (<$param_fh>) { my ($name,$value) = split /:/; push @params, $name; push @charam, $value; } my @actual = @charam; close $param_fh or die "Close failed: $!";

Some differences from your version:

The data you're reading would probably be best represented as a hash rather than a pair of arrays, but I say that without really knowing what you're going to do with it. If I were sticking all this in a hash, the code would look like this:

# same preamble my %value_of; while (<$param_fh>) { my ($name,$value) = split /:/; $value_of{$name} = $value; } # etc

Then you could get the stuff you have in @params and @charam using keys and values, but they'd be out of order.

If you're not familiar with hashes, I'd suggest you look into it. They are very useful.

I hope this helps.