Ich habe das folgende Skript geschrieben, um Dateien von und nach base64 zu konvertieren.Perl - Codierung von und zu base64
# Setup default mode
my $mode = '';
my $encoding = 'base64';
my $file = '';
GetOptions(
'mode=s' => \$mode, # mode = Encode/decode
'help!' => \$help, # help message
'encoding=s' => \$encoding,
'file=s' => \$file
) or die "Incorrect usage!\n";
if($help) {
print "Common on, it's really not that hard.\n";
} else {
print "# Script parameters provided : \n";
print "# Mode set to $mode.\n";
print "# Encoding is set to $encoding\n";
print "# Input File set to $file \n";
}
open(FILE, "$file") or die "$!";
open FILEOT, ">$file.out" or die "$!";
binmode FILEOT;
binmode STDOUT;
switch ($mode) {
case "encode" {
print "# Encoding file $file to $encoding \n";
print "# Processing .... \n\n";
while (read(FILE, $buf, 60*57)) {
$encoded = encode_base64($buf);
print $encoded;
print FILEOT $encoded;
}
}
case "decode" {
print "# Decoding file $file from $encoding \n";
print "# Processing .... \n\n";
while (read(FILE, $buf, 60*57) {
$decoded = decode_base64($buf);
print $decoded;
print FILEOT $decoded;
}
}
Das Codierungsteil funktioniert wie vorgesehen. Der Dekodierungsteil gibt keine Ausgabe. Ich gab ihm eine Eingabedatei der Likes:
My name is John
I eat pineapples
und es gibt keine Ausgabe. Ich denke, das gepufferte Lesen wird möglicherweise nicht benötigt, wenn eine bereits mit diesem Skript codierte Datei dekodiert wird. Ich habe den obigen Test verwendet, um die base64-Encoding-Version zu erstellen, aber die umgekehrte gibt nichts. Kann mir jemand helfen?
Sie werden nicht hilfreiche Antworten auf Ihre Frage erhalten, wenn Sie die * real-Code * schreiben, die ausgeführt werden. Die Zeile 'while (read (FILE, $ buf, 60 * 57) {' hat unausgeglichene Klammern, und ich bin sicher, dass * keiner * dieses Codes "wie vorgesehen funktioniert". Sie müssen auch * immer * 'strict' und verwenden 'Verwenden Sie Warnungen 'all'' oben in jedem Perl-Programm, das Sie schreiben, es ist sehr wenig sinnvoll,' my' zu verwenden, wenn sie nicht vorhanden sind – Borodin