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
| #!/usr2/public/local/bin/perl
use strict;
#use warnings;
use File::Copy;
sub droite {
my($chaine) = $_[0];
my($longeur) = $_[1];
return (substr($chaine,length($chaine)-$longeur,$longeur));
};
sub reste {
my($chaine) = $_[0];
my($indice) = $_[1];
return (substr($chaine,$indice,length($chaine)-$indice));
};
#
# Tile-reverse.pl -- Inverse en {y} les tuiles d'une arborescence
#
sub parcours {
my($dir) = @_;
my($ligne);
my(@catalog);
my(@temp_cat);
my($source);
my($dest);
mkdir $ARGV[0].'-y'.reste($dir, length($ARGV[0]));
chdir("$dir\\") || die "Rpertoire non trouv !";
opendir(DIR, $dir);
@catalog = readdir(DIR);
closedir(DIR);
foreach $ligne (@catalog) {
chdir("$dir\\") || die "Rpertoire non trouv !";
if ($ligne ne '.' and $ligne ne '..') {
if (chdir($ligne) == 1) {
&parcours("$dir\\$ligne");
}
else {
my $ext = droite($ligne, 4);
my $numname = substr($ligne, 0, length($ligne)-4);
if ($ext eq '.png') {
push (@temp_cat, $numname);
}
else {
print "Orphelin : $dir\\$ligne\n";
print $ARGV[0].'-y'.reste("$dir\\$ligne", length($ARGV[0]))."\n\n";
copy ($dir."\\".$ligne, $ARGV[0].'-y'.reste("$dir\\$ligne", length($ARGV[0]))) || die "Erreur de copie des orphelins";
};
};
};
};
@temp_cat = sort {$a <=> $b} @temp_cat;
for my $i (0..$#temp_cat) {
$source = pop (@temp_cat);
$dest = $ARGV[0].'-y'.reste("$dir\\$i.png", length($ARGV[0]));
print "$dir\\$source.png\n";
print "$dest\n\n";
copy ($dir."\\".$source.".png", $dest) || die "Erreur de copie des png";
};
};
#
# -- Début
#
if ($ARGV[0] eq '/?' or $ARGV[0] eq '') {
print "\n\nTile_reverse.pl -- Inverse en {y} les tuiles d'une arborescence de fichiers png\n";
print "\nCopie les fichiers dans une nouvelle arborescence nomme ...\\Rpertoire-y\\\n";
print "Les fichiers autres que png sont recopis tels quels.\n";
print "\nNe pas mettre de \"\\\" lors de l'appel : faire \"Tile_reverse.pl C:\\Rpertoire\"\n";
}
else {
print "\nTile_reverse.pl en cours d'xcution...\n\n";
print "Parcours
partir de la racine $ARGV[0]\n\n";
&parcours($ARGV[0]);
print "\nTile_reverse.pl termin.\n\n";
}; |
Partager