Si se instala el módulo CPAN Browser::Open no es una opción o no deseada, Taras' answer proporciona una buena alternativa, pero se puede mejorar en las siguientes maneras:
- hacer que el funcionan de forma robusta en Windows con URL que contienen metacaracteres de shell como
&
y ^
.
- en Windows, añadir soporte para la MSYS, Git Bash, y entornos Unix-emulación Cygwin
- añadir soporte para sistemas operativos adicionales que también tienen la utilidad
xdg-open
, a saber, todos los sistemas operativos que son freedesktop.org compatible, es decir, usar GUIs que están basados en X Window, que incluye plataformas que no son Linux, como PC-BSD (basado en FreeBSD) y OpenSolaris.
# SYNOPSIS
# openurl <url>
# DESCRIPTION
# Opens the specified URL in the system's default browser.
# COMPATIBILITY
# OSX, Windows (including MSYS, Git Bash, and Cygwin), as well as Freedesktop-compliant
# OSs, which includes many Linux distros (e.g., Ubuntu), PC-BSD, OpenSolaris...
sub openurl {
my $url = shift;
my $platform = $^O;
my $cmd;
if ($platform eq 'darwin') { $cmd = "open \"$url\""; } # OS X
elsif ($platform eq 'MSWin32' or $platform eq 'msys') { $cmd = "start \"\" \"$url\""; } # Windows native or MSYS/Git Bash
elsif ($platform eq 'cygwin') { $cmd = "cmd.exe /c start \"\" \"$url \""; } # Cygwin; !! Note the required trailing space.
else { $cmd = "xdg-open \"$url\""; } # assume a Freedesktop-compliant OS, which includes many Linux distros, PC-BSD, OpenSolaris, ...
if (system($cmd) != 0) {
die "Cannot locate or failed to open default browser; please open '$url' manually.";
}
}
Cygwin advertencia: Curiosamente, la única manera de proteger la URL pasada a cmd.exe
de interpretación de caracteres. como &
y ^
es anexar un espacio posterior. Esto funciona en todos menos en un caso límite, que, sin embargo, debería ser raro en el mundo real: si la URL contiene algo como %FOO%
y una variable de entorno llamada FOO
existe, %FOO%
se ha expandido inadvertidamente.
El navegador :: Open no funciona para Cygwin. Solo usa 'start' y no 'cygstart'. – Chloe
@Chloe, sí, eso es [un error en el navegador :: Abrir] (https://rt.cpan.org/Public/Bug/Display.html?id=85972). Con suerte, se solucionará pronto. – cjm