I don't know. It returns the following really fast for me
Global symbol "@list1" requires explicit package name at 733911.pl lin
+e 5.
Global symbol "$count1" requires explicit package name at 733911.pl li
+ne 9.
Global symbol "@list1" requires explicit package name at 733911.pl lin
+e 9.
Global symbol "$num1" requires explicit package name at 733911.pl line
+ 10.
Global symbol "$num2" requires explicit package name at 733911.pl line
+ 12.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 14.
Global symbol "$count1" requires explicit package name at 733911.pl li
+ne 15.
Global symbol "$var1" requires explicit package name at 733911.pl line
+ 17.
Global symbol "$num1" requires explicit package name at 733911.pl line
+ 17.
Global symbol "@list1" requires explicit package name at 733911.pl lin
+e 17.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 17.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 18.
Global symbol "$var2" requires explicit package name at 733911.pl line
+ 19.
Global symbol "$num2" requires explicit package name at 733911.pl line
+ 19.
Global symbol "@list1" requires explicit package name at 733911.pl lin
+e 19.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 19.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 20.
Global symbol "$var3" requires explicit package name at 733911.pl line
+ 21.
Global symbol "@list1" requires explicit package name at 733911.pl lin
+e 21.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 21.
Global symbol "$indx" requires explicit package name at 733911.pl line
+ 22.
Execution of 733911.pl aborted due to compilation errors.
It'll also complete much sooner if it wasn't an infinite loop. What's with the while ()?
Moving on, I'm not sure we can optimize your code if you don't show it. It's "# further code do anything" that gets executed 181,503 times. It's "# further code do anything" that's going to affect the performance.
You might get a tiny gain by rearranging your loops
for (
[ test1 => 10, 22 ],
[ test2 => 31, 17 ],
[ test3 => 4, 45 ],
) {
my ($test, $base1, $base2) = @_;
for my $num1 (200..400) {
my $var1 = $base1 + $num1;
for $num2 (300..600) {
my $var2 = $base2 + $num2;
...
}
}
}
Any maybe another tiny gain by eliminating some arithmetic
for (
[ test1 => 10, 22 ],
[ test2 => 31, 17 ],
[ test3 => 4, 45 ],
) {
my ($test, $base1, $base2) = @_;
my $var1 = $base1 + 200;
for (200..400) {
my $var2 = $base2 + 300;
for (300..600) {
...
++$var2;
}
++$var1;
}
}
Update: Fixed bug in second snippet. |