1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
#!/usr/bin/perl use strict; use warnings; use File::Copy; use File::Spec; my $source_dir='.'; my $destination_dir='.'; my @files=( 'kunden.csv', 'kurzgeschichten.csv', 'kundencounter.csv', ); my $backup_name='%s-backup-%s'; my $date=make_date(); for my $source (@files) { my $source_path=File::Spec->join($source_dir,$source); my $destination=sprintf($backup_name,$date,$source); my $destination_path=File::Spec->join(destination_dir,$destination); if(-f $source_path) { unless(copy($source_path,$destination_path)) { warn("Can't copy $source_path => $destination_path ($!)\n"); } } else { warn("$source_path don't exists\n"); } } sub make_date { my ($day,$mon,$year)=(localtime())[3,4,5] $mon+=1; $year+=1900; return sprintf('%04u%02u%02u',$year,$mon,$day); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
################################################################### SicherungsProzess: ################################################################### system("clear"); print "+-----------------------------------------------------+ \n"; print "| E*********** / Daten-Verwaltungs-Programm (EZ-DVP) | \n"; print "+-----------------------------------------------------+ \n"; print " \n"; print ">> Datenbank sichern << \n"; print " \n"; print " \n"; copy('/Desktop/EZ-Datenverwaltung/kunden.csv' , '/Desktop/EZ-Datenverwaltung/Data-Backup/kunden.csv'); copy('/Desktop/EZ-Datenverwaltung/kurzgeschichten.csv' , '/Desktop/EZ-Datenverwaltung/Data-Backup/kurzgeschichten.csv'); copy('/Desktop/EZ-Datenverwaltung/kundencounter.csv' , '/Desktop/EZ-Datenverwaltung/Data-Backup/kundencounter.csv'); print "Kunden-Datenbank wurde gesichert... OK \n"; print "Kurzgeschichten-Datenbank wurde gesichert... OK \n"; print "Kundenzähler-Datei wurde gesichert... OK \n"; print " \n"; print " \n"; print "Datensicherung beendet! [ENTER] \n"; $decider = <STDIN>; goto HauptMenu; exit;
1
2
3
4
5
6
calar found where operator expected at ./EZ-DVP.pl line 2507, near "''$statusdatum"
(Missing operator before $statusdatum?)
String found where operator expected at ./EZ-DVP.pl line 2507, near "$statusdatum''"
(Missing operator before ''?)
syntax error at ./EZ-DVP.pl line 2507, near "''$statusdatum"
Execution of ./EZ-DVP.pl aborted due to compilation errors.
copy('/home/xyz/Desktop/EZ-Datenverwaltung/kunden.csv' , '/home/xyz/Desktop/EZ-Datenverwaltung/Data-Backup/'.''$statusdatum''.'backup-kunden.csv');
1 2
my $path='/home/xyz/Desktop/EZ-Datenverwaltung'; copy("$path/kunden.csv" , "$path/Data-Backup/$statusdatum-backup-kunden.csv") or warn("Error copy $!");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
copy('/home/xyz/Desktop/EZ-Datenverwaltung/kunden.csv' , '/home/xyz/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kunden.csv') or warn("Error copy $!"); if ($! eq ""){ print "Kunden-Datenbank wurde gesichert... OK \n"; goto SicherungsCheck01; } print "$!"; $! = ""; SicherungsCheck01: copy('/home/xyz/Desktop/EZ-Datenverwaltung/kurzgeschichten.csv' , '/home/xyz/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kurzgeschichten.csv') or warn("Error copy $!"); if ($! eq ""){ print "Kurzgeschichten-Datenbank wurde gesichert... OK \n"; goto SicherungsCheck02; } print "$!"; $! = ""; SicherungsCheck02: copy('/home/xyz/Desktop/EZ-Datenverwaltung/kundencounter.csv' , '/home/xyz/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kundencounter.csv') or warn("Error copy $!"); if ($! eq ""){ print "Kundenzähler-Datei wurde gesichert... OK \n"; goto SicherungsCheck03; } print "$!"; $! = ""; SicherungsCheck03: print " \n"; print " \n"; print "Datensicherung beendet! [ENTER] \n"; $decider = <STDIN>; goto HauptMenu; exit;
Quotestrict und warnings sehe ich auch nicht.
Quoteaber vermutlich bekomme ich auch diesmal keine antwort darauf.
Quoteich sehe aber kein my(). was dann vermutlich bedeutet, dass du alle variablen oben im Programm deklarierst. sollte man nicht machen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
############################################ # Date-And-Time (DAT) / Datum und Uhrzeit # ############################################ my $DB_Monatstag; my $DB_Monat; my $DB_Jahr; my $DB_Stunden; my $DB_Minuten; my $DB_Sekunden; my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time); my $CTIME_String = localtime(time); $Monat+=1; $Jahrestag+=1; $Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat; $Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag; $Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden; $Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten; $Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden; $Jahr+=1900;
my $kddatum = $Jahr.$Monat.$Monatstag;
$kddatum = $Jahr.$Monat.$Monatstag;
Quoteund meine frage bezog sich auf die tutorials. hast du eins durchgearbeitet?
2012-09-27T16:37:10 ?
Nein, bzw. kann sein, denn diese Seite kommt mir bekannt vor (wegen der Zwiebelknolle). Ich habe sie "gebookmarked" und werde mal schauen, ob ein Tutorial für solche Desktopfenster dabei sind. Dann könnte ich die Ausgaben zukünftig verschönern *g*
1 2 3 4 5 6 7
my $from='/home/xyz/Desktop/EZ-Datenverwaltung/kunden.csv'; my $to='/home/xyz/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kunden.csv'; if(copy($from , $to)){ print "Kunden-Datenbank wurde gesichert... OK \n"; goto SicherungsCheck01; } warn("Error copy $from => $to ($!)");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
sub make_backup { my $dir=shift; my $file=shift; my $date=shift; my $from=$dir.'/'.$file; my $to=$dir.'/Data-Backup/'.$date.'-backup-'.$file; if(copy($from , $to)) { return 1; } warn("Error copy $from => $to ($!)"); return 0; } #... my $work_dir='/home/xyz/Desktop/EZ-Datenverwaltung'; if ( make_backup($work_dir,'kunden.csv',$statusdatum) ) { print "Kunden-Datenbank wurde gesichert... OK \n"; } if ( make_backup($work_dir,'kurzgeschichten.csv',$statusdatum) ) { print "Kurzgeschichten-Datenbank wurde gesichert... OK \n"; } if ( make_backup($work_dir,'kundencounter.csv',$statusdatum) ) { print "Kundenzähler-Datei wurde gesichert... OK \n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
$statusdatum = $Jahr.$Monat.$Monatstag; copy('/home/ritter/Desktop/EZ-Datenverwaltung/kunden.csv' , '/home/ritter/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kunden.csv'); if ($! ne ""){ warn("FEHLER => Sicherung der Kunden-Datenbank nicht möglich! / Systemmeldung: $!"); print " \n"; goto SicherungsCheck01; } print "Kunden-Datenbank wurde gesichert... OK \n"; print " \n"; SicherungsCheck01: copy('/home/ritter/Desktop/EZ-Datenverwaltung/kurzgeschichten.csv' , '/home/ritter/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kurzgeschichten.csv'); if ($! ne ""){ warn("FEHLER => Sicherung der Kurzgeschichten-Datenbank nicht möglich! / Systemmeldung: $!"); print " \n"; goto SicherungsCheck02; } print "Kurzgeschichten-Datenbank wurde gesichert... OK \n"; print " \n"; SicherungsCheck02: copy('/home/ritter/Desktop/EZ-Datenverwaltung/kundencounter.csv' , '/home/ritter/Desktop/EZ-Datenverwaltung/Data-Backup/'.$statusdatum.'-backup-kundencounter.csv'); if ($! ne ""){ warn("FEHLER => Sicherung der Kundenzähler-Datei nicht möglich! / Systemmeldung: $!"); goto SicherungsCheck03; print " \n"; } print "Kundenzähler-Datei wurde gesichert... OK \n"; print " \n"; SicherungsCheck03: print " \n"; print " \n"; print "Datensicherung beendet! [ENTER] \n"; $decider = <STDIN>; goto HauptMenu; exit;
2012-09-27T14:53:25 ?Die Perl-Foundation (WP) ist eine gemeinnützige Organisation, die u.a. die Weiterentwicklung von Perl finanziell fördert. Spenden bitte unter https://secure.donor.com/pf012/give einwerfen.Seit ihr ein Verein? Habt Ihr ein Spendenkonto?
2012-09-27T14:53:25 ?Und ob ich ein "sub", oder ein "goto" mache - ist doch fast dasselbe.
2012-09-27T14:53:25 ?Hab es so umgesetzt:
2012-09-27T14:53:25 ?Zur Gruselgeschichte wegen "goto":
Alle meckern _immer_ über "goto". Es ist eben so simpel zu benutzen. Und ob ich ein "sub", oder ein "goto" mache - ist doch fast dasselbe.
2012-09-27T14:53:25 ?Das solche Strukturen "kompliziert" zu durchschauen sind ist wahrhaftig Fakt. Wenn ich aber an meine Ausbildungszeit zurück denke (Energieelektroniker Fachrichtung Anlagentechnik) fallen mir spontan diverse Stromlaufpläne ein, von denen ihr sofort "Augenkrebs" bekommen würdet. Ich habe die alte SPS-Variante noch erlernen dürfen.
2012-09-27T14:53:25 ?Und Zeitrelaisprogrammierung über eine For-Next Schleife. Hatte man die gewünschte Zeit durch ausprobieren der Schleifendurchläufe endlich raus, dachte man alles erledigt. Irgendwann wurde der Chip der SPS gewechselt - gegen einen schnelleren... Tja, was soll ich sagen, da waren halt 10 eingestellte Sekunden nur noch 2 Sekunden lang - Der Prozessor war beim Schleifendurchlauf eben schneller...
2012-09-27T14:53:25 ?Wenn ich an die ganzen Steuerungen denke, wo diverse Sensoren und Mikroschalter mit in den Programmablauf einfliessen, ist eben mal ganz schnell fertig mit Struktur im Programm. Die heutigen Programme sind so umfangreich, da blick ein Servicetechniker auch nicht auf anhieb durch. Das einzig Wahre, was dir hilft, ist eine wirklich gute Doku, die dir Programmzeilengenau sagt, wo was passiert... Aber wie erwartet - sowas hat Seltenheitswert. Nicht zuletzt weil bei dem heutigen Preisdruck kaum noch jemand die Zeit hat, eine solche zu entwerfen...
Quoteund nun setzt du $! nicht zurück
$! = "";
Argument "" isn't numeric in scalar assignment at ./EZ-DVP.pl line 2514, <STDIN> line 5.
Quote$! If used numerically, yields the current value of the C "errno"
variable, or in other words, if a system or library call fails,
it sets this variable. This means that the value of $! is
meaningful only immediately after a failure:
2012-09-27T19:09:16 ?Eben doch so wie ich es hatte.
1 2 3 4 5 6 7
print "+-----------------------------------------------------+ \n"; print "| E********** / Daten-Verwaltungs-Programm (EZ-DVP) | \n"; print "+-----------------------------------------------------+ \n"; print " \n"; print ">> Datenbank sichern << \n"; print " \n"; print " \n";
1 2 3 4 5 6 7 8 9
print <<"EOM"; +-----------------------------------------------------+ | E********** / Daten-Verwaltungs-Programm (EZ-DVP) | +-----------------------------------------------------+ >> Datenbank sichern << EOM
1
2
3
for FILE in {kunden,kundencounter,kurzgeschichten}.csv; do
echo cp $FILE $( date +"%Y%m%d"-backup-$FILE)
done