Um einen Zimbra-Server zu verwalten, muss ich einen Teil einer Postfix-Warteschlange löschen. auf Google Nach der Suche, fand ich ein Stück Perl-Code von https://wiki.zimbra.com/index.php?title=Managing-The-Postfix-Queues&redirect=no:Was ist los mit diesem Stück Perl-Code?
#!/usr/bin/perl
$REGEXP = shift || die “no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!”;
@data = qx;
for (@data) {
if (/^(\w+)(\*|\!)?\s/) {
$queue_id = $1;
}
if($queue_id) {
if (/$REGEXP/i) {
$Q{$queue_id} = 1;
$queue_id = “”;
}
}
}
open(POSTSUPER,”|/opt/zimbra/postfix/sbin/postsuper -d -”) || die “couldn’t open postsuper” ;
foreach (keys %Q) {
print POSTSUPER “$_\n”;
};
close(POSTSUPER);
Aber wenn ich es, die System Berichte ausführen:
Unmatched right curly bracket at ./delete_queue.pl line 9, at end of line
(Might be a runaway multi-line ;; string starting on line 5)
syntax error at ./delete_queue.pl line 9, near "}"
syntax error at ./delete_queue.pl line 15, near "}"
Unmatched right curly bracket at ./delete_queue.pl line 17, at end of line
Execution of ./delete_queue.pl aborted due to compilation errors.
Da ich keinen Programmierer Perl, sondern nur eine nicht-professioneller Mail-Server-Administrator, ich weiß nicht, was mit diesem Stück Perl-Code falsch ist.
Danke für Ihre Hilfe.
Beginnen Sie mit dem Hinzufügen der Zeilen 'use strict; 'und' use warnings; 'am Anfang des Skripts, das der Zeile' #!/Usr/bin/perl' folgt. Gute Chance, dass die zusätzlichen Fehlermeldungen, die Sie erhalten, bei der Lösung Ihres Problems hilfreich sein werden. – edehont
'@data = qx;' Dein Problem ist wahrscheinlich hier. Sie sollten etwas wie '@data = qx/a system command /' haben. Und Sie sollten immer 'strict' und' warnings' verwenden. – Dada
Ich weiß nicht, was sie getan haben, um diesen Code zu bekommen, aber Sie verwenden * LEFT DOUBLE QUOTATION MARK * (U + 201C) und * RECHTE DOUBLE QUOTATION MARK * (U + 201D) anstelle von einfachen * QUOTATION MARK * (U + 0022). Perl erkennt nur Letzteres. Sie müssen etwas wie ein Textverarbeitungsprogramm verwendet haben, um Ihr Programm zu schreiben? Sie haben auch eine Anweisung '@data = qx;' was nichts bedeutet. Dieses Programm wird nie funktionieren – Borodin