Schrift
[thread]7073[/thread]

Klappt nicht!: Ein kleines Skript, das nicht funktionie



<< >> 8 Einträge, 1 Seite
Gast Gast
 2005-06-24 15:26
#55706 #55706
Ich habe ein kleines Perl-Skript auf Windows geschrieben.

Ich lerne gerade Perl, mit dem Buch In 21 Tagen Perl.

Und, die Aufgabe ist im Buch in einem Workshop gestellt, doch als ich in der Loesung sehen wollte was ich falsch gemacht hab, sah ich das die Loesung nur fuer Unix ist.

Ich soll mit der Angabe eines Verzeichnisses dieses durchsuchen und alles was aelter als 6 Monate ist in den Ordner old verschieben der gegebenenfalls erst mal erstellt wird.

Ich habe jetzt, da ich nichts hab das aelter als 6 Monate ist die Zeit auf 1 Tag gestellt.

-M ist bei Windows fuer den letzten Zugriff, ich finde das auch sinnvoller.

Hier das Skript:

Code: (dl )
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
#!/usr/bin/perl -w
# aufgabe4.pl
# Alle Dateien eines Verzeichnisses die aelter als sechs Monate sind werden in das Verzeichnis old verschoben.
#
# Version 1.02 vom 23.06.05
#
use File::Copy;

print "\n\n\nAnstatt \\ bitte / schreiben.\n\nVerzeichnis: ";chomp ($ver = <STDIN>);

@files = <$ver/*>;

for ($n = 0;$n <= $#files;$n++) {
print "\n\nMit der Datei $files[$n] wird jetzt gearbeitet.\n";
sleep 1;
if (-M $files[$n] > 1) {
if (! -d "$ver/old") {
mkdir "$ver/old";
print "\nOrdner old wurde erstellt.\n";
sleep 1;
}
[B]copy '$files[$n]', '$ver/old';[/B]
print "Die Datei $files[$n] wird kopiert nach $ver/old.\n";
sleep 1;
}
else {
print "Datei: $files[$n] ist noch aktuell.\n";
sleep 1;
}
}

print "\n\n\nBeenden mit beliebiger Taste.";<STDIN>;


Ich weiss echt nicht warum das nicht funktioniert.
renee
 2005-06-24 15:33
#55707 #55707
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
alles zwischen den ' wird nicht interpoliert...
Du versuchst $files[$n] zu kopieren, aber das gibt es nicht! Du willst ja eher die Datei, die in $files[$n] hinterlegt ist, kopieren...

copy $files[$n], $ver.'/old';
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-06-24 18:11
#55708 #55708
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
benutze use strict -> http://wiki.perl-community.de/bin/view/Wissensbasis/UseStrict

Und am besten gewöhnst Du Dich gleich jetzt auf eine Einrücktiefe von 4 Zeichen um ... (vgl. auch perldoc perlstyle), falls da nicht wirklich gravierende Gründe dagegen sprechen.\n\n

<!--EDIT|Crian|1119622406-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pq
 2005-06-24 18:40
#55709 #55709
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
einfach tabs nehmen. dann kann jeder mit seiner eigenen einrücktiefe lesen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2005-06-24 19:48
#55710 #55710
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=pq,24.06.2005, 16:40]einfach tabs nehmen. dann kann jeder mit seiner eigenen einrücktiefe lesen.[/quote]
Das heisst aber, dass man *immer* Tabs nehmen muss und nicht ab und zu mal acht Spaces stattdessen --- dann sieht's kaputt aus.

Tab=8 Zeichen!!!
J-jayz-Z
 2005-06-25 01:50
#55711 #55711
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
nicht unbedingt. In vim beispielsweise kann man die Tabgröße einstellen. Ich nutze zum programmieren eine tiefe von 4 zeichen. Ist eingerückt, passt aber auch noch bis zu 5 oder 6 einrücktiefen auf den bildschirm...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
Crian
 2005-06-27 11:05
#55712 #55712
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ich finde Tabs von Übel, seit der Platz von Whitespace in Sourcecode einem wirklich keine Sorgen mehr machen muss. Deshalb stelle ich meine Editoren so ein, dass Tabs durch Whitespace ersetzt werden. (Naja und für Makefiles nehm ich dann einen anderen ;-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
ptk
 2005-06-27 23:26
#55713 #55713
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=J-jayz-Z,24.06.2005, 23:50]nicht unbedingt. In vim beispielsweise kann man die Tabgröße einstellen. Ich nutze zum programmieren eine tiefe von 4 zeichen. Ist eingerückt, passt aber auch noch bis zu 5 oder 6 einrücktiefen auf den bildschirm...[/quote]
In meinem Emacs geht es beim Drucken der Tab-Taste auch nur 4 Zeichen weiter (oder 2 oder 8, je nachdem, wessen Sourcen ich gerade editiere, dafuer gibt es ja die Local variables in Emacs). Wenn ein Tab im Source-Code vorkommt, wird immer auf 8 Spaces expandiert.
<< >> 8 Einträge, 1 Seite



View all threads created 2005-06-24 15:26.