in reply to Win32 MsgBox declaration

One of us is confused. The value returned from Win32:MsgBox is just an integer. The way you're calling it, it should always be "1". So the variable $output will just contain the value "1". Just saying:
$output;
doesn't do anything. In fact, if you run your program with "-w" or "use warnings", you'll get the message "Useless use of private variable in void context".

Perhaps you want to make a subroutine like this:

sub showend { Win32::MsgBox("Script completed.", MB_ICONINFORMATION); }
Then you can call showend() where your are now doing $output.