Als beginnend Perl-programmeur ben ik bezig om een programmaatje te schrijven dat een directorystructuur recursief doorzoekt naar bestanden die 'test.dat' heten. Als zo'n bestand gevonden wordt, moet de datum van laatste wijziging van dat bestand veranderd worden in de huidige datum min één week (dus op vorige week...
)
Ik heb tot nu toe de volgende code, die eerlijk gezegd een bij elkaar geraapt zooitje code is van diverse Perl sites:
Onder Windows werkt dit prima. Ik zie in de Explorer de datum van de test.dat-bestanden keurig veranderen. De bedoeling is echter dat dit programma op een Apache server komt te draaien en daar verandert er helemaal niets! Weet iemand hoe dit komt?
Heeft dit misschien met bepaalde rechten te maken? Alle test.dat bestanden heb ik de permissies 766 gegeven, maar dit helpt niets...
Ik heb tot nu toe de volgende code, die eerlijk gezegd een bij elkaar geraapt zooitje code is van diverse Perl sites:
code:
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
| #!/usr/bin/perl
use File::Find;
use File::Spec;
pgrep(path => 'Data', filename => qr/test\.dat/, content => qr/./);
my %defaults = (path => '.', filename => qr/./, content => qr/./);
sub pgrep {
my %params = (%defaults, @_);
my @matches;
my ($dir,$dcount) = File::Spec->rel2abs($params{path});
$dcount = @$dcount = $dir =~ /\\\.\./g;
$dir =~ s/(\\.*?){$dcount}(\\\.\.){$dcount}//;
my $count = 0;
find(sub{$File::Find::name =~ s/\//\\/g;
if (-f and /$params{filename}/) {
local $/;
push @matches, $File::Find::name;
$newtime = time() - 604800;
utime ($newtime, $newtime, $File::Find::name);
}
},
$dir);
print "$_\n" foreach (sort {lc($a) cmp lc($b)} @matches);
} |
Onder Windows werkt dit prima. Ik zie in de Explorer de datum van de test.dat-bestanden keurig veranderen. De bedoeling is echter dat dit programma op een Apache server komt te draaien en daar verandert er helemaal niets! Weet iemand hoe dit komt?
Heeft dit misschien met bepaalde rechten te maken? Alle test.dat bestanden heb ik de permissies 766 gegeven, maar dit helpt niets...