12
votes

Comment puis-je lancer le navigateur Web par défaut dans Perl sur tout système d'exploitation?

Je veux ouvrir une URL, telle que http://www.example.com/ , à la fin d'un script Perl. Je ne veux pas y accéder avec www :: mécaniser mais montrer la page Web à l'utilisateur dans un navigateur Web graphique.

Il existe des moyens de le faire dans Mac ( Ouvrir URL ) et Windows, mais je veux une solution qui fonctionne sur n'importe quel système d'exploitation, pas seulement une.


0 commentaires

3 Réponses :


19
votes

2 commentaires

Navigateur :: Open ne fonctionne pas pour Cygwin. Il n'utilise que 'start' pas "cygstart".


@Chloe, oui, c'est Un bogue dans le navigateur :: Ouvrir . J'espère que ça va être corrigé bientôt.



8
votes

Vous pouvez utiliser $ ^ o code> variable pour identifier une plate-forme et utiliser différentes commandes pour chaque système d'exploitation.

Par exemple: P>

sub open_default_browser {
  my $url = shift;
  my $platform = $^O;
  my $cmd;
  if    ($platform eq 'darwin')  { $cmd = "open \"$url\"";          } # Mac OS X
  elsif ($platform eq 'linux')   { $cmd = "x-www-browser \"$url\""; } # Linux
  elsif ($platform eq 'MSWin32') { $cmd = "start $url";             } # Win95..Win7
  if (defined $cmd) {
    system($cmd);
  } else {
    die "Can't locate default browser";
  }
}

open_default_browser("http://www.example.com/");


2 commentaires

Cela dépend de l'endroit où le script sera utilisé. S'il s'agit d'un script unique, il devrait utiliser moins de dépendances externes pour une meilleure portabilité. Cependant, les modules peuvent être ensemble avec le script et, dans ce cas, il est préférable d'utiliser navigateur :: Ouvrir .


Bien fait, bien que xdg-ouvert semble être disponible sur plus de systèmes Linux que X-www-navigateur , qui n'est pas préinstallé sur Fedora et Centos, par exemple.



1
votes

Si vous installez un module CPAN Navigateur :: Ouvrir N'est-ce pas une option ou non désirée, La réponse de Taras offre une bonne alternative, mais peut être améliorée de la manière suivante:

  • Faites fonctionner la fonction de manière robuste sur Windows avec des URL contenant des métacaractères de shell tels que & et ^ . . .
  • sous Windows, ajoutez un support pour les environnements MSYS, GIT BASH et CYGWIN UNIX-Emulation
  • Ajoutez une assistance pour des systèmes d'exploitation supplémentaires qui disposent également de l'utilitaire XDG-Ouvrir , à savoir tous les OSS qui sont FreeDesktop.org -Compatible, c'est-à-dire Utilisez des gites X à la fenêtre, qui inclut des plates-formes non linux telles que PC-BSD (FreeBSD-Basé) et OpenSolaris. xxx

    Cygwin CAVEAT: bizarrely, le seul moyen de protéger l'URL transmise à cmd.exe de l'interprétation des caractères. telle que & et ^ est de annoncer un espace de fuite . Cela fonctionne dans tout cas sauf un, qui devrait toutefois être rare dans le monde réel: si l'URL contient quelque chose comme % foo% et une variable d'environnement nommée foo existe , % foo%% est étendu par inadvertance.


0 commentaires