OS mit Perl ermitteln
-
Hi,
wie kann man in Perl zuverlässig herausfinden, welches Betriebssystem als Basis dient? Ich nutze Strawberry Perl und zumindest dort gibt es keine Ausgabe, die Rückschlüsse schließen lässt (Ausgabe unten). Grund ist, dass unter Windows ein paar Dateinamen anders sind, als unter Linux. Da es sich aber um Systemdateien handelt, kann ich diese nicht einfach umbenennen. Konkret handelt es sich um "/dev/null", bzw. "NUL". Ich wollte der Einfachheithalber, wenn eine Datei nicht aktualisiert werden soll, einfach ihren Inhalt ins Leere schicken. Vielleicht hat jemand ja eine sinnvollere Idee dafür. Die Ausgabe von --version auszuwerten halte ich nicht gerade für die beste Idee, weil dort definitiv keine Indikatoren auf das OS vorgeschrieben sind.
$^O --> STDOUT_TOP0
-
Ich hab jetzt eine Möglichkeit gefunden. Ich hoffte aber da gibts etwas noch einfacheres. Die Funktionen scheinen aber laut Doku ziemlich langsam zu sein. Zumindest gibt es extra schnelle Versionen, von denen aber abgeraten wird.
use cwd 'abs_path'; sub iswin { my $pathname = Cwd::realpath("."); return ':' eq substr($pathname, 1, 1); }
-
Hi,
Du kannst dafür die Spezialvariable $^O benutzen: "perl -e 'print $^O'"
(siehe auch http://faq.perl.org/perlfaq8.html#How_do_I_find_out_wh)
operating system -> $^O value Linux -> linux Windows -> MSWin32 AIX -> aix Solaris -> solaris
-
Du hast es vielleicht überlesen, aber leider funktioniert diese Möglichkeit bei mir nicht. Ich weiß nicht woran es liegt und ob man die bei mir vorhandene Ausgabe als eindeutigen Indikator nehmen kann. Deswegen ist die Zuverlässigkeit dieser Methode unbrauchbar, auch wenn man nur behaupten wolle, mein Perl wäre Mist. Übrigens hab ich das Perl direkt von der Perl-Seite vorgeschlagen bekommen, also so verkehrt kann es nicht sein. Als Alternative wurde nur noch Activeperl genannt, welches ich aber Zwecks einfacher Verteilung nicht genommen habe.
perl.org schrieb:
Strawberry Perlexternal link: A 100% Open Source Perl for Windows that is exactly the same as Perl everywhere else; this includes using modules from CPAN, without the need for binary packages. Help is available from other Windows Perl developers on the #win32 irc channel on irc.perl.org (see websiteexternal link for access through a browser).