Affichage des propriétés des fichiers
youllla
Messages postés
25
Statut
Membre
-
youllla Messages postés 25 Statut Membre -
youllla Messages postés 25 Statut Membre -
Bonjour,
Dans le but d'afficher les propriétés des fichiers contenus dans un répertoire, j'ai essayé le script suivant avec Perl:
#!/bin/perl
#use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
my $dir='../../../../home/spool/messagerie/forward';
chomp $dir;
opendir(DIR,$dir) || die "cannot open $dir $!";
while((my $filename=readdir(DIR)))
{
print("$filename\n");
my @Info = stat($filename);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Sortie du test</title></head><body><pre>\n";
print "<b>Fichier:</b> $filename\n";
print "<b>Num\351ro de p\351riph\351rique:</b> $Info[0]\n";
print "<b>Num\351ro Inode:</b> $Info[1]\n";
printf "<b>Droits d'acc\350s:</b> %o\n", $Info[2];
print "<b>Nombre de liens au fichier:</b> $Info[3]\n";
print "<b>User-ID du propri\351taire:</b> $Info[4]\n";
print "<b>Group-ID du propri\351taire:</b> $Info[5]\n";
print "<b>Num\351ro brut du p\351riph\351rique:</b> $Info[6]\n";
print "<b>Taille du fichier:</b> $Info[7]\n";
print "<b>Date du dernier acc\350s:</b> $Info[8]\n";
print "<b>Date de la derni\350re modification:</b> $Info[9]\n";
print "<b>Date de la modification Inode:</b> $Info[10]\n";
print "<b>Taille de bloc id\351ale:</b> $Info[11]\n";
print "<b>Nombre de blocs occup\351s:</b> $Info[12]\n";
print "</pre></body></html>\n";
}
closedir(DIR);
Plusieurs erreurs de ce genre s'affichent quand je lance l'exécution :
[Wed Jun 24 10:52:33 2009] opendir.pl: Use of uninitialized value in concatenation (.) or string at opendir.pl line 22.
<b>Numéro brut du périphérique:</b>
[Wed Jun 24 10:52:33 2009] opendir.pl: Use of uninitialized value in concatenation (.) or string at opendir.pl line 23.
<b>Taille du fichier:</b>
pouvez vous m'aider pour résoudre ce problème !?!
Merci
Dans le but d'afficher les propriétés des fichiers contenus dans un répertoire, j'ai essayé le script suivant avec Perl:
#!/bin/perl
#use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
my $dir='../../../../home/spool/messagerie/forward';
chomp $dir;
opendir(DIR,$dir) || die "cannot open $dir $!";
while((my $filename=readdir(DIR)))
{
print("$filename\n");
my @Info = stat($filename);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Sortie du test</title></head><body><pre>\n";
print "<b>Fichier:</b> $filename\n";
print "<b>Num\351ro de p\351riph\351rique:</b> $Info[0]\n";
print "<b>Num\351ro Inode:</b> $Info[1]\n";
printf "<b>Droits d'acc\350s:</b> %o\n", $Info[2];
print "<b>Nombre de liens au fichier:</b> $Info[3]\n";
print "<b>User-ID du propri\351taire:</b> $Info[4]\n";
print "<b>Group-ID du propri\351taire:</b> $Info[5]\n";
print "<b>Num\351ro brut du p\351riph\351rique:</b> $Info[6]\n";
print "<b>Taille du fichier:</b> $Info[7]\n";
print "<b>Date du dernier acc\350s:</b> $Info[8]\n";
print "<b>Date de la derni\350re modification:</b> $Info[9]\n";
print "<b>Date de la modification Inode:</b> $Info[10]\n";
print "<b>Taille de bloc id\351ale:</b> $Info[11]\n";
print "<b>Nombre de blocs occup\351s:</b> $Info[12]\n";
print "</pre></body></html>\n";
}
closedir(DIR);
Plusieurs erreurs de ce genre s'affichent quand je lance l'exécution :
[Wed Jun 24 10:52:33 2009] opendir.pl: Use of uninitialized value in concatenation (.) or string at opendir.pl line 22.
<b>Numéro brut du périphérique:</b>
[Wed Jun 24 10:52:33 2009] opendir.pl: Use of uninitialized value in concatenation (.) or string at opendir.pl line 23.
<b>Taille du fichier:</b>
pouvez vous m'aider pour résoudre ce problème !?!
Merci
A voir également:
- Affichage des propriétés des fichiers
- Renommer des fichiers en masse - Guide
- Lire des fichiers epub - Guide
- Affichage double ecran - Guide
- Vérificateur des fichiers système - Guide
- Gestion des fichiers - Télécharger - Gestion de fichiers
4 réponses
Salut,
Essaie
106485010510997108
Essaie
while(defined(my $filename=readdir(DIR)))ou
while((my $filename=readdir(DIR)))
{
if ($filename){
print("$filename\n");
my @Info = stat($filename);
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Sortie du test</title></head><body><pre>\n";
print "<b>Fichier:</b> $filename\n";
print "<b>Num\351ro de p\351riph\351rique:</b> $Info[0]\n";
print "<b>Num\351ro Inode:</b> $Info[1]\n";
printf "<b>Droits d'acc\350s:</b> %o\n", $Info[2];
print "<b>Nombre de liens au fichier:</b> $Info[3]\n";
print "<b>User-ID du propri\351taire:</b> $Info[4]\n";
print "<b>Group-ID du propri\351taire:</b> $Info[5]\n";
print "<b>Num\351ro brut du p\351riph\351rique:</b> $Info[6]\n";
print "<b>Taille du fichier:</b> $Info[7]\n";
print "<b>Date du dernier acc\350s:</b> $Info[8]\n";
print "<b>Date de la derni\350re modification:</b> $Info[9]\n";
print "<b>Date de la modification Inode:</b> $Info[10]\n";
print "<b>Taille de bloc id\351ale:</b> $Info[11]\n";
print "<b>Nombre de blocs occup\351s:</b> $Info[12]\n";
print "</pre></body></html>\n";
}
} --
106485010510997108
mercii pour votre aide, j'avais fait un autre script :
#!/bin/perl
#use warnings;
use CGI::Carp qw(fatalsToBrowser);
my $filename;
my $dir='/home/spool/messagerie/forward';
chomp $dir;
opendir(DIR,$dir) || die "cannot open $dir $!";
while((my $filename=readdir(DIR)))
{
print("\n[ $filename ]\n");
my @stats = stat("$dir/$filename");
if(scalar(@stats) == 0) {
print "\tAucune info\n";
}
else {
print "\t".join(' - ', @stats)."\n";
}
et ça marche :)
#!/bin/perl
#use warnings;
use CGI::Carp qw(fatalsToBrowser);
my $filename;
my $dir='/home/spool/messagerie/forward';
chomp $dir;
opendir(DIR,$dir) || die "cannot open $dir $!";
while((my $filename=readdir(DIR)))
{
print("\n[ $filename ]\n");
my @stats = stat("$dir/$filename");
if(scalar(@stats) == 0) {
print "\tAucune info\n";
}
else {
print "\t".join(' - ', @stats)."\n";
}
et ça marche :)
Re,
Ok.
Pour l'info
if(scalar(@stats) == 0) {
Il suffit de faire le test
Pas besoin de la fonction scalar.
Pourquoi?
En faisant @stats==0 on traite le tableau dans un contexte scalaire.
Dans un contexte scalaire ça sera le nombre d'éléments qui sera envoyé et pas les éléments du tableau.
Tu peux même profiter de fait que 0 de point de vu boolean a la valaeur de vérité fausse.
Donc le test pourra être écrit comme ça (l'opérateur + permet le traitement dans le contexte scalaire)
Ok.
Pour l'info
if(scalar(@stats) == 0) {
Il suffit de faire le test
if( @stats == 0 ) {
Pas besoin de la fonction scalar.
Pourquoi?
En faisant @stats==0 on traite le tableau dans un contexte scalaire.
Dans un contexte scalaire ça sera le nombre d'éléments qui sera envoyé et pas les éléments du tableau.
Tu peux même profiter de fait que 0 de point de vu boolean a la valaeur de vérité fausse.
Donc le test pourra être écrit comme ça (l'opérateur + permet le traitement dans le contexte scalaire)
if(@stats + 0) { # donc s'il y a un élément, c'est vrai
print "\t".join(' - ', @stats)."\n";
}else { # sinon la valeur sera zéro, donc faux
print "\tAucune info\n";
}