При установке модуля CPAN Браузер :: Открыть не является вариантом или нежелателен, Ответ Тараса предоставляет хорошую альтернативу, но может быть улучшена следующими способами:
- обеспечивает надежную работу функции в Windows с URL-адресами, которые содержат метасимволы оболочки, такие как
&
и ^
.
- в Windows, добавить поддержку сред MSYS, Git Bash и Cygwin Unix-эмуляции
- добавлена поддержка дополнительных операционных систем, которые также имеют утилиту
xdg-open
, а именно все ОС, которые freedesktop.org -совместимы, т. Е. Используют графические интерфейсы на основе X Window, что включает Платформы Linux, такие как PC-BSD (на основе FreeBSD) и 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: причудливо, единственный способ защитить URL, переданный cmd.exe
от интерпретации символов. такие как &
и ^
для добавления завершающего пробела . Это работает во всех случаях, кроме одного крайнего случая, который, однако, должен быть редким в реальном мире: если URL содержит что-то вроде %FOO%
и переменная среды с именем FOO
существует , %FOO%
- это непреднамеренно расширен.