use strict; use warnings; use Data::Dumper; for ($i=0;$i<5;$i++) { $x{$i}="x"; } print Dumper($x); #### Global symbol "$i" requires explicit package name at noname.pl line 5. Global symbol "$i" requires explicit package name at noname.pl line 5. Global symbol "$i" requires explicit package name at noname.pl line 5. Global symbol "%x" requires explicit package name at noname.pl line 6. Global symbol "$i" requires explicit package name at noname.pl line 6. Global symbol "$x" requires explicit package name at noname.pl line 10. Execution of noname.pl aborted due to compilation errors. #### use strict; use warnings; use Data::Dumper; my %x; for (my $i = 0; $i < 5; $i++) { $x{$i} = "x"; } print Dumper (\%x); #### #1/ Perl for loop: my %x; for my $i (0 .. 4) { $x{$i} = "x"; } #2/ For as a statement modifier $x{$_} = 'x' for 0 .. 4; #3/ map generating hash key/value pairs: %x = map {$_ => 'x'} 0 .. 4; #4/ hash slice and x operator: @x{0 .. 4} = ('x') x 5;