in reply to system calls and shell aliases
A shell alias is something that your shell deals with. The aliases only exist as shortcuts in your shell white the shell is executing.
These aliases do not exist as program files in the filesystem. When you run system("tt") from perl the directories in your PATH environment variable are searched for a program file named tt. In this case no program named tt is being found.
The man page for BASH indicates alias expansion takes place after one full line of text is read in. This could mean that aliases are only expanded when BASH is reading from a terminal and not when it has been passed a command to run.
Normally BASH runs in a terminal and executes a loop where it reads a command and runs the command then repeats. It might be that aliases are only expaned inside of that loop but I'm not sure that is the case.
I tried running perl -e 'system("bash --login -c l");' where I have a BASH alias mapping "l" to "ls -l" and I got back: "bash: line 1: l: command not found".
As an aside the man page for BASH has this text in the BUGS section:
Aliases are confusing in some uses.