Thread Anzahl der Files > 1 Kb Bestimmen (7 answers)
Opened by neila_1982 at 2009-04-21 10:50

Gast wer
 2009-04-21 11:53
#120801 #120801
Ich weiß garnicht wo ich anfangen soll...

Der Code enthält so viele Seltsamkeiten:

Code (perl): (dl )
1
2
3
4
foreach(@eintraege){
  opendir $ordner,$para1;
  $zaehler++;
}

Was soll das?! Du schließt das Handle ja nichtmals, du überschreibst es, da muß perl irgendwan versagen!
Irgendwann kann perl keine weiteren Handles öffnen!
Um die Anzahl der Einträge zu bekommen schreibt man:
Code (perl): (dl )
my $anzahl=@eintraege;


Die Stelle ist noch besser:
Code (perl): (dl )
1
2
3
4
5
6
foreach (@eintraege)
{
  print @eintraege[$zaehler];
  $zaehler++;
  if($zaehler>0){return 1;}
}

Das printet den ersten Eintrag und gibt 1 zurück wenn die Liste nicht leer ist.

warum schreibst du nicht:
Code (perl): (dl )
1
2
3
4
5
if(@eintraege)
{
  print $eintraege[0];
  return 1;
}


versuch es mal so:
Code (perl): (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
#!/usr/bin/perl
use strict;
use warnings;

use File::stat;

my $path = 'C:\Dokumente und Einstellungen'; 

open (my $out,'>', 'file_count.csv') or die "$!\n"; 

print ($out "Counts of files in a directory \n");

&funktAusgabe($path); 

close $out;


sub funktAusgabe
{
  my $local_time = localtime();
  my ($ordner)=@_;
  my @eintraege = read_dir($ordner);
  my $anzDateien=@eintraege;
  my $anzDateien2=0;

  foreach my $eintrag (@eintraege)
  {
    if(-d $eintrag)
    {
      funktAusgabe($eintrag);
    }
    elsif(stat($eintrag)->size() >= 1024)
    {
      $anzDateien2++;
    }
  }
  
  print($out "$local_time;$anzDateien;$anzDateien2;$ordner\n");
}

sub read_dir
{
  my $dir=shift(@_);
  opendir( my $dfh, $dir) or die "$!\n";
  my @filelist=readdir($dfh);
  closedir($dfh);
  
  my @output;
  
  for (@filelist)
  {
    if($_ ne '.' and $_ ne '..')
    {
      my $filename="$dir\\$_";
      push(@output, $filename);
    }
  }

  return @output;
}

View full thread Anzahl der Files > 1 Kb Bestimmen