Ich versuche, ein grundlegendes System zur Fehlerprüfung einrichten, wo Shell-Fehler von einem Systemaufruf abgefangen werden. execute_command ist eine Webmin-Funktion, die einen Systemaufruf ausführt und dann eine Fehlermeldung auf ihren 4. Parameter setzt. Ich nenne grundsätzlich execute_command_error („adduser-Test“), wohl wissend, dass ich bereits einen Benutzer namens Test auf meinem vordefinierten Arrays erstellt und basiert id erwarten, dass esMehrdimensionale Arrays mit Ganzzahlen und Strings
Drucken nicht Benutzer
Können add hinzufügen dieser Benutzer, weil es bereits auf dem System existiert.
sondern ich:
Uhhhhhhhhh?
Uhhhhhhhhh?
Ich habe überprüft, dass $ exe und $ Return "adduser" und 1, respektvoll sind. Was verstehe ich nicht über Arrays? Es scheint, die Zeichenfolge und/oder Nummer zu ignorieren und nur nach der letzten Definition mit 3 Elementen zu gehen. Was ist eine Lösung oder eine bessere Lösung? Hier
ist ths Code:
$ErrorMsg['adduser',1,'title'] = "Unable to add user";
$ErrorMsg['adduser',1,'msg'] = "Unable to add that user because it already exists on the system.";
$ErrorMsg['random',2,'duaisdhai'] = "Uhhhhhhhhh?";
sub execute_command_error
{
my $error = "";
my $cmd = $_[0];
$return = execute_command($cmd, undef, undef, \$error)>>8;
if ($error) {
my ($exe) = $cmd =~ m|^(.*?)[ ]|;
$exe_title = $ErrorMsg[$exe,$return,'title'];
$exe_msg = $ErrorMsg[$exe,$return,'msg'];
print $exe_title."<br>";
print $exe_msg ."<br>";
}
}
Update:
Ich denke, dass ich Hashes zu verwenden, ich habe keine Ahnung, warum ich dachte, ich Strings in Indizes verwenden könnten. Mit dieser sagte, hat wenig Forschung mich zu so etwas wie dies führt:
%ErrorMsgs = ('adduser' => {
'1' => {
'title' => 'Unable to add user',
'msg' => 'Unable to add that user because it already exists on the system.',
},
},
);
Nun, wie würde ich es mit einer Variablen verweisen? weil keiner dieser Arbeit:
$exe_title = $ErrorMsgs{"$exe"}{"$return"}{"title"};
$exe_title = $ErrorMsgs{$exe}{$return}{title};