Schrift
[thread]7971[/thread]

Unterschiedliche MD5 Ergebnisse (Seite 4)

Leser: 1


<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten
Rambo
 2006-05-18 11:35
#66013 #66013
User since
2003-08-14
803 Artikel
BenutzerIn

user image
@renee, das geht leider nicht da bei dieser Lösung ich use cwd
benutzen muss und dann die Ausgabe wie folgt aussehen würde.

Digest is dac7d9116c3f2b35425ed6934e952101 for c:/prg/test/Releaseinfo.doc

ich möchte die Ausgabe allerdings erst ab dem DIR wo ich mich befinde und hatte deshalb den "IF" teil entfernt.

@pq, danke aber er nimmt trotzdem auch die Verzeichnisse mit
Digest is dac7d9116c3f2b35425ed6934e952101 for ./Releaseinfo.doc
Digest is d41d8cd98f00b204e9800998ecf8427e for ./CLASSES
Digest is d41d8cd98f00b204e9800998ecf8427e for ./LIB
Digest is 8b547eebf653cb817a009b7be6c59a45 for ./LIB/mail.jar

Die Verzeichnisse CLASSES und LIB möchte ich in dem Falle nicht haben sondern nur alle Datein.

Kann es sein das es gar nicht ohne Verzeichnisse geht? Dann müsste ich die DIR einzelnd aus der Datei entfernen.

Merci für die Hilfe

Gruss Rambo
pq
 2006-05-18 13:41
#66014 #66014
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Rambo,18.05.2006, 09:35]Kann es sein das es gar nicht ohne Verzeichnisse geht? Dann müsste ich die DIR einzelnd aus der Datei entfernen.[/quote]
ich glaub, du verstehst hier was falsch.
was bringt dir im ergebnisarray ein eintrag "mail.jar", wenn du nicht weißt,
in welchem verzeichnis diese datei liegt.

meine anmerkung zu renees code war, dass man auf $_ statt $File::Find::name
überprüfen muss, weil es sonst überhaupt nicht funktioniert (außer man
hat einen absoluten Verzeichnisnamen angegeben).
das kann auch bei dir nicht funktioniert haben.

wenn du einfach generell den dateinamen einer pfadangabe haben willst, kannst
du das natürlich, dafür gibt es ja File::Basename.\n\n

<!--EDIT|pq|1147945423-->
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
renee
 2006-05-18 14:54
#66015 #66015
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pq,17.05.2006, 17:54][quote=renee,17.05.2006, 17:48]
Code: (dl )
   push (@files,$File::Find::name) if(-f $File::Find::name);
[/quote]
das muss heißen: if -f $_
denn innerhalb der sub befinden wir direkt uns in dem verzeichnis, in dem die datei legt.[/quote]
Und in $File::Find::name steht doch der absolute Pfad drin, also sollte es auch mit $File::Find::name funktionieren...
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/
renee
 2006-05-18 15:01
#66016 #66016
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
use strict;
use Digest::MD5;
use File::Find;
use threads;
use threads::shared;
#
#
# ------------------------------------------------------------------
# get time
# ------------------------------------------------------------------
my @time = localtime();
my $time_string = sprintf "%02d.%02d.%02d",
$time[5]+1900, $time[4]+1, $time[3],
$time[2], $time[1], $time[0];
#
#
# ------------------------------------------------------------------
# threads component
# ------------------------------------------------------------------
my $StopDotPrintFlag : shared;
sub DotPrintThread
{
my ($Interval, @Trash) = @_;
use IO::Handle;
autoflush STDOUT 1;
my $IntervalCount=0;
while ($StopDotPrintFlag != 2)
{
if ($StopDotPrintFlag == 1)
{
print STDOUT ".";
}
$IntervalCount++;
sleep $Interval;
}
return $IntervalCount;
}
#
#
# ------------------------------------------------------------------
# file details
# ------------------------------------------------------------------
my $directory = '.';
my $result_file = "md5_check_$time_string\.txt";
unlink ("$result_file");
#
my @files;
find(\&get_dir,$directory);
#
print "\n\tMD5_CHECK.PL powered by R.Hehlert\n";
#
#
# ------------------------------------------------------------------
# start threads
# ------------------------------------------------------------------
$StopDotPrintFlag = 0;
my $Interval = 1;
print "\n\tStarting 0% [";
my $DotPrintThread = threads->new(\&DotPrintThread, $Interval);
$StopDotPrintFlag = 1;
#
#
# ------------------------------------------------------------------
# start main programm
# ------------------------------------------------------------------
for my $file(@files)
{
my $md5 = Digest::MD5->new;
open FILE, $file->[0];
binmode(FILE);
while (<FILE>)
{ $md5->add($_);
}
my $digest = $md5->hexdigest;
close FILE;
open(my $fh, ">>$result_file") or die $!;
print $fh "Digest is $digest for $file->[1]\n";
close $fh;
}
#
#
# ------------------------------------------------------------------
# stop threads
# ------------------------------------------------------------------
$StopDotPrintFlag = 2;
my $NumberOfPrintedDots=$DotPrintThread->join;
print "\t] 100% applied time was ".$NumberOfPrintedDots*$Interval." seconds\n";
print "\n\tPls. read $result_file for results\n";
#
#
# ------------------------------------------------------------------
# get all files from all directorys
# ------------------------------------------------------------------
sub get_dir
{
push (@files,[$File::Find::name,$_]) if(-f $File::Find::name);
}
#
#END
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/
pq
 2006-05-18 16:41
#66017 #66017
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=renee,18.05.2006, 12:54]Und in $File::Find::name steht doch der absolute Pfad drin, also sollte es auch mit $File::Find::name funktionieren...[/quote]
naja, wie ich im anderen posting sagte: wenn man der subroutine find() einen
abosluten pfad mitgibt, ja. aber eben nicht, wenn er relativ ist.

ok, bitte:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
$ perl -wle'
use File::Find;
my (@files_a, @files_b);
find(sub {
   push @files_a, $File::Find::name if -f $File::Find::name;
   push @files_b, $File::Find::name if -f $_;
}, "./testdir");
print "a: (@files_a)\nb: (@files_b)"'
a: ()
b: (./testdir/file ./testdir/sub1/file ./testdir/sub2/file)
\n\n

<!--EDIT|pq|1147956240-->
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
renee
 2006-05-18 23:35
#66018 #66018
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ok, wieder was gelernt...
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/
<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten



View all threads created 2006-05-11 18:46.