User since
2003-08-07
2921
articles
BenutzerIn
Hallo!
Ich habe in einem der anderen Themen aufgeschnappt, dass das Home-Verzeicnis von Linux-Benutzern $ENV{HOME} ist.
Bei mir unter XP ist es in der Variable $ENV{'USERPROFILE'} abgelegt.
Ist das immer anders?
Gibt es eine Möglichkeit das irgendwie über eine generalisierte API zanzusprechen?
Sost muss ich ja für jedes OS auf die entsprechende Umgebungsvariable umstellen, was bei cross-over-Programmierung ziemlich umständlich ist.
Grüße, pktm
User since
2003-11-28
3645
articles
ModeratorIn
Mach doch einfach eine Funktion:
sub get_home_dir {
if ($^O eq 'MSWin32') {
$ENV{USERPROFILE};
} else {
$ENV{HOME}; # wobei es sicherer ist, getpwuid zu verwenden!
}
}
User since
2003-08-07
2921
articles
BenutzerIn
Und das geht auch bei MACs?
User since
2005-01-17
14741
articles
Admin1
Du solltest unter Windows auch %HOMEDRIVE%%HOMEPATH% testen!
Bei mir liegt nämlich mein Verzeichnis dort.
Dummerweise (WIndows hat eigene Vorstellungen vom Userverzeichnis) kann aber nicht alles dort hinverlegt werden!\n\n
<!--EDIT|GwenDragon|1123780794-->
User since
2003-08-14
2022
articles
BenutzerIn
[quote=pktm,11.08.2005, 17:49]Und das geht auch bei MACs?[/quote]
Ja, Mac OS X ist ein waschechtes Unix, also geht das.
User since
2003-11-28
3645
articles
ModeratorIn
Windows: Ich habe noch Code gefunden, bei dem das Homeverzeichnis von einem Domainserver geholt wird.
Win32API::Net::UserGetInfo($server, Win32::LoginName(), 2, $userinfo);
if ($userinfo) {
return $userinfo->{homeDir};
}
Evtl. kann man auch auf die Environmentvariablen HOMESHARE und HOME pruefen.
User since
2005-04-13
625
articles
BenutzerIn
Das
sub get_home_dir {
if ($^O eq 'MSWin32') {
$ENV{USERPROFILE};
} else {
$ENV{HOME}; # wobei es sicherer ist, getpwuid zu verwenden!
}
}
geht IMHO auch kürzer:
$^O eq 'MSWin32' ? $ENV{USERPROFILE} : $ENV{HOME};
EDIT:
btw.: pktm fragte, ob es auch bei MAC`s geht, allerdings ist MAC OS X ein Unix, aber die anderen IMHO nicht...\n\n
<!--EDIT|J-jayz-Z|1124621003-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de
User since
2003-08-14
2022
articles
BenutzerIn
[quote=J-jayz-Z,21.08.2005, 12:36]btw.: pktm fragte, ob es auch bei MAC`s geht, allerdings ist MAC OS X ein Unix, aber die anderen IMHO nicht...[/quote]
Auf Mac OS X hatte ich schon hingewiesen. Mac OS 9 und älter beinhalten kein perl, sondern man muss MacPerl installieren, das wohl an einigen Stellen vom normalen Perl abweicht - aber mittlerweile kann Mac OS X wohl als normal-zustand betrachtet werden.
User since
2005-04-13
625
articles
BenutzerIn
Wie sieht es den mit dem neuen Mac aus? Dieses Tiger war es glaub ich. Ist das auch ein Unix?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de
User since
2003-08-14
2022
articles
BenutzerIn
is' es. Tiger ist nur ein Name für Mac OS X 10.4