Hi,
LanX has given you the reason why your code failed. You might have found out by yourself with more ease if you had used a more meaningful error message. Instead of:
chdir($corner) or die "\n $!\n";
You may want something like this:
chdir($corner) or die "\nCannot cd to $corner $!";
giving you more useful information on what failed. BTW, it is better not to put "\n" after $!, because you get more information if you don't. Consider these two one-liners:
$ perl -e 'my $c = "foobar.txt"; open my $FH, "<", $c or die "cannot
+open $c $!"; '
cannot open foobar.txt No such file or directory at -e line 1.
$ perl -e 'my $c = "foobar.txt"; open my $FH, "<", $c or die "cannot
+open $c $!\n"; '
cannot open foobar.txt No such file or directory
As you can see, without the "\n", you get the code line number where the exception occurred (of course, this is not very useful in a one-liner, but quite practical with larger programs).
A small additional point is that the:
&loading_tsc;
syntax for calling a function has been superseded about 20 years ago and was replaced with:
loading_tsc();
# or: loading_tsc($param1, $param2);
The syntax with
& may still be used, but only to obtain some special effects on the function call (by-passing prototypes). You are not using prototypes here
(and they would not be very useful), so rather use the regular syntax with parens.