Du kannst es Windows selber aus der Registry suchen lassen.
Quotesystem(qq(start "$file"))
startet die mit der Extension von der in $file genannten Datei verknüpften Anwendung mit dieser Datei, so wie es in der Registry eingetragen ist. (So als ob du den Dateinamen in Start->Run gepastet hättest.)
Allerdings bekommst du dann wieder eine sichtbare CMD-Box kurzzeitig.
Diese wiederum solltest du mit
[quote=SetChildShowWindow,perldoc Win32]Win32::SetChildShowWindow(SHOWWINDOW)
[CORE] Sets the *ShowMode* of child processes started by system().
By default system() will create a new console window for child
processes if Perl itself is not running from a console. Calling
SetChildShowWindow(0) will make these new console windows invisible.
[/quote]unsichtbar schalten können (von mir nicht getestet).
Edit: Und wenn du schon selbst mit der Registry arbeitest, dann beherzige bitte den Hinweis in [quote=!,perldoc Win32::Registry]NAME
Win32::Registry - accessing the Windows registry
[obsolete, use
Win32::TieRegistry]
[/quote]Ist auch viel eleganter und einfacher YMMV\n\n
<!--EDIT|pKai|1130529897-->
I sense a soul in search of answers.