Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7040[/thread]

Datum der letzen Dateiänderung?

Leser: 3


<< >> 9 Einträge, 1 Seite
J-jayz-Z
 2005-06-07 14:46
#55407 #55407
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi, ich bräuchte eine Möglichkeit in Perl, um das Datum der letzen Dateiänderung auszugeben, kann mir da jemand helfen?
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
pq
 2005-06-07 15:04
#55408 #55408
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perldoc -f -X
perldoc -f stat
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
J-jayz-Z
 2005-06-07 15:05
#55409 #55409
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
okay, thx. ich denke, das hilft mir weiter!
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
Styx
 2005-06-07 15:26
#55410 #55410
User since
2003-11-01
16 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
#!/usr/local/bin/perl -w

use strict;

my $alter = (-M "test.pl");              # Gleitkommazahl!
print "Letzte Änderung vor $alter Tagen\n";


Mehr zu Dateien und Verzeichnissen

MfG, Styx
AbRaXaS
 2006-05-22 16:59
#55411 #55411
User since
2006-05-22
30 Artikel
BenutzerIn
[default_avatar]
Mahlzeit!

Ich als Perl-n00b (hatte bisher noch nie mit Perl zu tun, nur mit anderen Skriptsprachen) bin gerade am verzweifeln.
Vielleicht fällt jemandem was zu meinem Problem ein:

Zur Erklärung: das gleich folgende Skript generiert eine Indexseite, wo die Texte als html auf einer Seite dargestellt werden. Die unterschiedlichen Texte haben eine Überschrift und den Text. Nun soll auch das Datum angezeigt werden, von wann dieser Text ist. Dazu habe ich die die stat()-Funktion benutzt.
Nun generiert er mir den Index, schreibt auch das Datum, ist aber immer wieder das Datum der letzten Datei aus dem Verzeichnis.
Da wo
Code: (dl )
print $konvertiertes_datum;

steht, soll das Datum erscheinen:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/local/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser);

$BASEPATH=$ENV{DOCUMENT_ROOT};

#Maximum of Messages
$MAX=20;


$CGI2="/cgi-bin/view.pl";
$SCRIPTNAME="skript.pl";
$URL="http://www.domain.de";
$PATH="/skripte/generierteSeiten";
$IPATH="/skripte/skripte-OnLine";
$query = new CGI;
$D1="\x0d";
$C1="\x0a";
$categ=$query->param('cat');
if ( ($query->param('show') eq 1) && ($query->param('artikel') ne "") ){}
else{

###### Verzeichnis oeffnen
opendir VERZ , "$BASEPATH$PATH";
@alledateien = grep !/^\.\.?$/, readdir VERZ;
closedir VERZ;
##########################

$anzahldatei = @alledateien;
$x=0;
$z=0;
$a=0;
while($x<$anzahldatei){
$datei=$alledateien[$x];

($name, $dateiend) = split (/\x2e/, $datei, 2);
if (($dateiend eq "nitf") or ($dateiend eq "NITF")){
&generateIndex
;
}
$x+=1;
}

###### Verzeichnis oeffnen
opendir VERZ , "$BASEPATH$PATH";
@alledateien = grep !/^\.\.?$/, readdir VERZ;
closedir VERZ;
##########################

$anzahldatei = @alledateien;

if ($a < 0){
$x=0;
while($x<$anzahldatei){
$categ="/thema/";
$datei=$alledateien[$x];
($name, $dateiend) = split (/\x2e/, $datei, 2);
if (($dateiend eq "nitf") or ($dateiend eq "NITF")){
&generateIndex;
}
$x+=1;
}
}

&sendeIndex;
}

sub generateIndex {

&main;
&filter1;

}

sub getPicture {
...
if (){
while(){
&parseBuFile;
}
}
}

sub filter1 {

}

sub getAnreisser {

}

sub parseBuFile {

}


sub sendeIndex {

foreach $key ())
{
if ($timer < $MAX){
}
}

if (){
}

foreach $key (){
if (){
if (){

print $konvertiertes_datum;
}
else{
}

}
}
}


sub main {

&getPicture;
&getAnreisser;

}

___END___


wo also muß ich nun folgendes einbauen, damit das funktioniert. Ich habe den Überblick verloren und weiß nicht, wo ich es schon überall hineingebaut hatte:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$PFAD="../www/Skripte/generierteSeite/";
$datei = "$PFAD$datei";
@Info = stat($datei);
$konvertiertes_datum = &konvertiere_datum($Info[9]);

sub konvertiere_datum {
$Seconds = $Info[9];
$Seconds = shift;

@date = ( localtime($Seconds) )[0..5];
$date[4]++;
$date[5] += 1900;

foreach $d (@date[2..4]) {
$d = sprintf("%02d", $d);
}

$date = join(".", @date[3,4,5]);
return "$date";
}


Ich habe hier nur Auszüge und wichtigsten Schleifen abgebildet, den kompletten Quellcode darf ich nicht öffentlich machen, deshalb nur der Auszug. Ich hoffe das ist übersichtlich genug, damit da jemand was mit anfangen kann.
renee
 2006-05-22 17:14
#55412 #55412
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du machst vieles zu umständlich. Außerdem solltest Du Dir angewähnen Wiki:use strict zu verwenden.

Du hast uns gar nicht den relevanten Code gezeigt. Es fehlt nämlich der Aufruf von konvertiere_datum in Deinem großen Code-Ausschnitt.
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/
AbRaXaS
 2006-05-22 19:37
#55413 #55413
User since
2006-05-22
30 Artikel
BenutzerIn
[default_avatar]
[quote=renee,22.05.2006, 15:14]Du machst vieles zu umständlich. Außerdem solltest Du Dir angewähnen Wiki:use strict zu verwenden.

Du hast uns gar nicht den relevanten Code gezeigt. Es fehlt nämlich der Aufruf von konvertiere_datum in Deinem großen Code-Ausschnitt.[/quote]
was heisst denn zu umständlich? was kann ich denn ändern?

Der Aufruf von konvertiere Datum steht auch nicht im großen Code, das war ja meine Frage, wo ich was hinpacken muß, damit das funktioniert. Wenn du so willst hätte ich den zweiten Teil auch nochmal trennen können.

Sagen wir es mal so, ich habe das Skript "übernommen". Es war schon so geschrieben und ich soll jetzt die genannte Modifikation schreiben.
renee
 2006-05-22 19:45
#55414 #55414
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du benutzt while-Schleifen mit Counter, obwohl da for(each)-Schleifen besser wären. Dadurch verwendest Du auch Variablen, die nicht notwendig sind.

Du rufst Methoden auf, die wiederum nur andere Methoden aufrufen. Da könntest Du die Zwischenmethode streichen.

In Deinem Code ist überhaupt nicht zu erkennen *Wie* und *Was* gemacht wird. Dadurch wird es nahezu unmöglich zu sagen, *wo* Du den Methodenaufruf einbauen sollst.

In normaler Sprache kann ich Dir nur sagen, dass es im Prinzip vor Deinem print $konvertiertes_datum gehört... Aber wie gesagt, ohne genauere Infos wird es fast unmöglich, Dir zu helfen.

Wiki:"Wie frage ich richtig?"
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/
AbRaXaS
 2006-05-23 14:19
#55415 #55415
User since
2006-05-22
30 Artikel
BenutzerIn
[default_avatar]
schade, dann werde ich da wohl durchhangeln müssen. Vielen Dank trotzdem für die Aufklärung. Ich habe das Skript aber auch gar nicht geschrieben. Mal sehen, ich bin gerade mit nem Perl Buch beschäftigt :0\n\n

<!--EDIT|AbRaXaS|1148379640-->
<< >> 9 Einträge, 1 Seite



View all threads created 2005-06-07 14:46.