Schrift
[thread]10788[/thread]

Ausgabe User Daten

Leser: 1


<< >> 3 Einträge, 1 Seite
schiba1
 2007-11-13 15:05
#102356 #102356
User since
2007-11-13
1 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

programmiere seit kurzem Perl, daher wohl eher eine Dummy Frage :)
Aber ich hoffe ihr könnt mir helfen.

Ich möchte die folgende Schleife verwenden die ich in einem anderen
Script gefunden habe um mir UserDaten zu holen.
Funktioniert soweit ganz gut, zumindest erhalte ich bei Ausgabe auch
die Location des Users.

foreach (keys %CustomerUserList) {
my %User = $CommonObject{CustomerUserObject}->CustomerUserDataGet(
User => $_,
);
$CustomerUserList{$_} = $User{UserLocation} || '';

}

In dem Hash befinden sich allerdings auch andere werte, wie beispielsweise die
UID $User{UID} oder das Department $User{UserDepartment}.

Die Frage die sich mir stellt ist, wie ich die weiteren Daten ausgeben lassen kann.

$CustomerUserList{$_} = $User{UserLocation} && $User{UID} && || '';

oder wie kann ich das machen?

Vielen Dank für Eure Hilfe
renee
 2007-11-13 16:08
#102359 #102359
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du solltest wohl eher eine Referenz auf den Hash mit den "gefundenen" Infos speichern...

Code (perl): (dl )
1
2
3
4
5
6
foreach (keys %CustomerUserList) {
    my %User = $CommonObject{CustomerUserObject}->CustomerUserDataGet(
        User => $_,
    );
    $CustomerUserList{$_} = \%User; # Referenz speichern
}


Und bei der Ausgabe dann so etwas in der Richtung:
Code (perl): (dl )
1
2
3
for my $key ( keys %CustomerUserList ){
    print $CustomerUserList{$key}->{UserLocation},"\n"; # dereferenzieren...
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Siechfred
 2007-11-13 16:10
#102362 #102362
User since
2007-11-12
30 Artikel
BenutzerIn
[default_avatar]
Zum Verständnis meinerseits:

Code (perl): (dl )
1
2
3
4
foreach (keys %CustomerUserList) {
  my %User = $CommonObject{CustomerUserObject}->CustomerUserDataGet(User => $_);
  $CustomerUserList{$_} = $User{UserLocation} || '';
}


CustomerUserList enthält vermutlich eine Liste von Usern, die Du abfragen willst. Für jeden willst Du CustomerUserDataGet aufrufen, die abgefragten Daten speicherst Du in %User zwischen, verwendest aber nur UserLocation, sodass im Ergebnis in CustomerUserList jedem User eine Location zugewiesen ist. Willst Du den kompletten Hash verwenden, den CustomerUserDataGet liefert, wäre sowas möglich:

Code (perl): (dl )
1
2
3
4
foreach (keys %CustomerUserList) {
  my %User = $CommonObject{CustomerUserObject}->CustomerUserDataGet(User => $_);
  $CustomerUserList{$_} = \%User;
}


Zugriff:

Code (perl): (dl )
$CustomerUserList{$User}->{$Schluessel}


Selektiv würde auch gehen, indem Du bspw. ein Array mit den gewünschten Schlüsseln fütterst und das Ergebnis durchgehst:

Code (perl): (dl )
1
2
3
4
5
6
7
my @wanted = qw(UserLocation UID foo bar quox);
foreach my $mainkey (keys %CustomerUserList) {
  my %User = $CommonObject{CustomerUserObject}->CustomerUserDataGet(User => $mainkey);
  foreach my $subkey (@wanted) {
    $UserLocationList{$mainkey}->{$subkey} = $User{$subkey} || '';
  }
}


So in etwa, einfacher und eleganter geht's bestimmt auch :)

Siechfred
<< >> 3 Einträge, 1 Seite



View all threads created 2007-11-13 15:05.