mr_kaktus Geschrieben 25. September 2006 Geschrieben 25. September 2006 Hi @all, ich hab hir mal ein Auschnitt, au meinen Perlskipt: while (<USERLIST>){ chomp; # +++ schreiben in die "LdapAddHost.ldif" +++ print LDAPADDHOSTFILE grep (/^dn:/,$_ . "\n" . "changetype: modify" . "\n" . "add: host" . "\n" . "host: $HOSTNAME" . "\n\n"); } Die while Schleife liest über ein DateiHeandle USERLIST Zeile für Zeile ein. Wenn diese Zeile jetzt mit "dn:" Anfängt, dann wird das in einer Datei mittels dem Dateiheandle LDAPADDHOSTFILE geschrieben. Am schluss wird in etwa so eine Datei erzeugt:dn: uid=testuser,ou=users,o=neptun,c=de changetype: modify add: host host: hostnameJetzt wollt ich mal fragen, ob ich print Zeile etwas anders gestallten könnte bzw. wie ich das machen könnte? Zitieren
dr.disk Geschrieben 2. Oktober 2006 Geschrieben 2. Oktober 2006 Man könnte das Ganze vor allem performanter machen. Der String für die Ausgabedatei wird ja immer generiert auch wenn die Zeile danach nicht ausgegen wird. Aussehen könnte das Ganze z.B. auch so: while(my $line = <USERLIST>) { if($line =~ m/^dn:/o) { chomp $line; my $ldifstring = join "\n", $line, 'add: host', 'host: ' . $HOSTNAME, ''; print LDAPADDHOSTFILE $ldifstring; } } Wer's kompakter mag kann das Ganze natürlich auch wieder abkürzen: print LDAPHOSTFILE $_, join("\n", 'add: host', 'host: ' . $HOSTNAME, '') if $_ =~ m/^dn:/o while <USERLIST>; Dann ist's halt wieder nur noch eine Zeile... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.