[Perl] Récuperer l'année d'un fichier ...

Récuperer l'année d'un fichier ... [Perl] - Perl - Programmation

Marsh Posté le 24-04-2002 à 10:12:04    

Bonjour,
 
G besoin de récuperer l'année ou un fichier à été changer : en gros je veux faire la commande UNIX : stat nom_fichier | grep Change: | cut -d" " -f6
Mais j'arrive pas a faire ca en PERL .. je trouve pas la commande qui permet de recuperer la valeur en sortie de la commande ... system renvoie le statut de sortie du programme. Existe t'il une autre fonction pour faire ce que je veux ?  
Merci bcp !

Reply

Marsh Posté le 24-04-2002 à 10:12:04   

Reply

Marsh Posté le 24-04-2002 à 10:24:04    

G trouvé la réponse ... ct tout con ... j'aurai du faire une recherche avant car un mec m'a donné une idée !
$year=`stat $ARGV[0] | grep Change: | cut -d\" \" -f6`;
Voila ! ca pourra peut etre aider qcn !

Reply

Marsh Posté le 24-04-2002 à 10:25:29    

Reply

Marsh Posté le 24-04-2002 à 10:28:34    

Citation :

G trouvé la réponse ... ct tout con ... j'aurai du faire une recherche avant car un mec m'a donné une idée !  
$year=`stat $ARGV[0] | grep Change: | cut -d\" \" -f6`;  
Voila ! ca pourra peut etre aider qcn !


 
Utilise la fonction stat() de Perl : elle existe, c'est pas pour rien. N'utilise pas les backticks (`) pour executer une commande systeme et recuperer le resultat si l'equivalent Perl existe...
 
hihi :D

 

[jfdsdjhfuetppo]--Message édité par impulse le 24-04-2002 à 13:52:34--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-04-2002 à 11:02:03    

Ouais merci ... j'avais aussi vu la commande stat ... je vais essayer ;-)

Reply

Marsh Posté le 24-04-2002 à 12:34:21    

J'arrive a faire la meme chose avec stat() :
 
$year=1900+(localtime((stat($ARGV[0]))[9]))[5];
 
C un peu plus complexe et plus difficilement comprehensible ... mais je sais pas si ca apporte un reel interet en terme de performance ... mais je pense que oui car c une commande interne ... t'en pense koi impulse ? ou un autre :D .
Merci encore ! ;)

Reply

Marsh Posté le 24-04-2002 à 13:36:24    

Pourquoi crois tu que Larry Wall (le createur de Perl) se soit "amusé" a refaire ce genre de fonctions ? ;)
 
Je pense que c'est mieux d'utiliser la fonction Perl, quand elle existe, meme si je ne peux pas t'affirmer que tu gagnes quelque chose en termes de peformance (a priori je dirais que c'est plus performant mais je t'avoue que je ne me suis pas penché sur la question :D).
 
De + je ne trouve pas que "$year=1900+(localtime((stat($ARGV[0]))[9]))[5];" soit incomprehensible => il suffit de chercher des infos sur localtime() et stat() pour celui qui ne connait pas et tout devient clair (par exemple : je n'ai jamais utilisé ces fonctions mais en faisant un petit tour dans la doc de Perl je peux savoir en 30 secondes a quoi elles servent etc...).
 
Voila.
 
hihi :D
 
PS : j'ai trouvé l'info que tu cherchais grace a un bouquin excellent sur Perl que je conseille a tous ceux qui s'interessent a ce language : "Learning Perl" chez O'Reilly.

 

[jfdsdjhfuetppo]--Message édité par impulse le 24-04-2002 à 13:37:08--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 24-04-2002 à 13:55:59    

il faut utiliser les fonctions natives de Perl ou autre quand elles existent, plus simple et surtout portable. Pensez a certains OS pas gratuit, stats ils connaissent surement pas :D

Reply

Marsh Posté le 24-04-2002 à 14:01:22    

Citation :

il faut utiliser les fonctions natives de Perl ou autre quand elles existent, plus simple et surtout portable. Pensez a certains OS pas gratuit, stats ils connaissent surement pas


 
J'allais le rajouter ! (je viens de voir ça dans la doc de Perl ;) ). Je me souviens maintenant que je m'etais pris la tete (enfin pas trop quand meme) pour une commande de ce type car je faisais la moitié du boulot sur NT et l'autre sur Unix. Bien sur les 2 commandes n'utilisaient pas le meme format... :sarcastic:
 
hihi ;)

Reply

Marsh Posté le 24-04-2002 à 14:08:07    

Oki ben merci a tous !
Je vais garder la deuxieme version ... comme ca mon code sera "portable" ... mais c fait pour tourner sur du Sun ou linux.
Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed