[PERL] fichier PM

fichier PM [PERL] - Perl - Programmation

Marsh Posté le 20-08-2002 à 15:29:14    

Vous savez comment utiliser un fichier pm dans un script perl ?

Reply

Marsh Posté le 20-08-2002 à 15:29:14   

Reply

Marsh Posté le 20-08-2002 à 15:32:57    

voici mon script perl :
 
#----------------------------------------------------------------
use IO::Socket;
 
use TEST;
 
print "Start initialization\n";
 
$sock = IO::Socket::INET->new(  Proto    => 'tcp',
                                  PeerAddr => '163.187.78.34',
                                  PeerPort => 683 )
                  or print ($@), die;
print("socket creation ok\n" );
 
# ----------------- TEST interface ----------------------------------------
print "Create instance : TEST interface\n";
 
$test = new TEST($sock)
 or print("\nError interface test creation\n" ) , die;
print("Instance test interface ok\n" );
#----------------------------------------------------------------
 
 
 
et voici mon fichier pm :
 
#----------------------------------------------------------------
use strict;
 
package main;
 
use CORBA::Perl::CORBA;
use Carp;
 
#
#   begin of interface TEST
#
 
package TEST;
 
use CORBA::Perl::CORBA;
use Carp;
 
 
######  methodes
 
# constructor
sub new {
 my $proto = shift;
 my $class = ref($proto) || $proto;
 my $self = {};
 bless($self, $class);
 my($sock) = @_;
 croak "undefined parameter 'sock' in 'TEST'.\n"
   unless (defined $sock);
 croak "invalid parameter 'sock' in 'TEST'.\n"
   unless (ref $sock eq 'IO::Socket::INET';);
 $self->{sock} = $sock;
 return $self;
}
#----------------------------------------------------------------

Reply

Marsh Posté le 20-08-2002 à 15:35:45    

Le script perl ne reconnait pas le constructeur new se trouvant dans le fichier test.pm
 
Le message d'erreur est le suivant :
Can't locate object method "new" via package "TEST"
 

Reply

Marsh Posté le 21-08-2002 à 08:58:33    

Un package Perl (.pm) doit contenir les éléments suivants :
 

Code :
  1. package MonPackage;
  2. use vars qw(@ISA @EXPORT);
  3. use Exporter;
  4. @ISA = qw(Exporter);
  5. @EXPORT = qw(MaFonction1 MaFonction2 MaFonction3);


 
Il faut déclarer le package dans celui-ci via package. On utilise la méthode Exporter qui contient déjà des routines toutes faites pour inclure des packages dans un script Perl. @EXPORT contient le nom de toutes tes fonctions contenues dans le package. A noter que tu peux également utiliser @EXPORT_OK pour y insérer les fonctions que tu veux utiliser qu'uniquement via un require.
 
Quant à la suite de ton package :
 

Code :
  1. sub MaFonction1 { }
  2. sub MaFonction2 { }
  3. sub MaFonction3 { }
  4. 1;


 
Très important : tout package doit se terminer par une ligne contenant 1;
 
En espérant t'avoir un ch'tit peu aidé ...


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 21-08-2002 à 09:11:26    

ok merci

Reply

Marsh Posté le 21-08-2002 à 10:58:24    

ok ca marche.
et maintenant j'aurai une autre question sur perl.
En C, il existe des fonctions time, localtime et mktime.
En perl, j'ai trouvé les fonctions time et localtime.
Tu connais une commande du mktime pour créer ton heure ?
 

Reply

Marsh Posté le 21-08-2002 à 10:58:47    

je suis allé voir sur perldoc.com sans succès.

Reply

Marsh Posté le 21-08-2002 à 11:03:14    

ca existe pas mktime en perl  


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 21-08-2002 à 11:05:19    

comment fait-on pour saisir une heure du genre : 17/07/02 à 18:00:00 ?
 
Il faut carrément créer une fonction de saisie ?

Reply

Marsh Posté le 21-08-2002 à 11:09:03    

Je te donne 2 exemples concernant l'utilisation de time() et de localtime() :
 

Code :
  1. # exemple avec time()
  2. my $TpsDebut = time();
  3. # le programme continue ici
  4. # on arrive en fin de traitement :
  5. my $TpsFin = time();
  6. print "le traitement a dure ", $TpsFin - $TpsDebut, " secondes";


 
time() sert à calculer le temps de traitement (par exemple) d'un programme. Il retourne le nbre de secondes écoulées depuis le 1er janvier 1980.
 

Code :
  1. # exemple maintenant avec localtime :
  2. my ($Sec,$Min,$Heure,$Mjour,$Mois,$Annee,$Sjour,$Ajour,$Isdst)=localtime(time);
  3. print "il est $Heure:$Min$Sec";


 
localtime() donne bcp d'autres éléments de temps, je te conseille de zieuter perlfunc si tu es sous unix ou bien de faire une recherche sur localtime dans la doc html si tu utilises activestate


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 21-08-2002 à 11:09:03   

Reply

Marsh Posté le 21-08-2002 à 11:09:45    

comment ca saisir ?  
sinon pour tout les problemes de gestion du temps, il existe des tas de modules du plus simple au plus compliqué sur cpan  
search.cpan.net, tu vas trouver ton bonheur


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 21-08-2002 à 11:10:09    

cpan.org je veux dire


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 21-08-2002 à 11:13:20    

gratter_dede a écrit a écrit :

comment fait-on pour saisir une heure du genre : 17/07/02 à 18:00:00 ?
 
Il faut carrément créer une fonction de saisie ?




 

Code :
  1. print "Donnez la date du jour au format JJ/MM/AA :";
  2. my $Date;
  3. do {
  4.     chomp($Date) = <STDIN>;
  5.     if ($Date !~ /^([0-9]{2})\/([0-9]{2})\/([0-9]{2})$/) {
  6.         $Date = "";
  7.         print "Format date erreur !";
  8.     }
  9. } while (! $Date);


 
Je pense que tu as capté le coup de ma boucle do ... while (sinon, demande). Pour ce qui est de l'expression régulière :
 
Je teste si ma variable contient bien une série de 2 chiffres ([0-9]{2}) suivi d'un slash (\/) etc etc. Si faux, j'efface ce qui a été saisi.
 
J'espère avoir été clair.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 21-08-2002 à 11:13:53    

ce que je cherche à faire est la conversion suivante :
 
saisir une heure sous forme 15/07/02 à 18:00:00 en seconde depuis le 1° janvier 1970.
 
Le processus inverse se fait avec time et localtime.
 
Je recherche un EQUIVALENT DE mktime sous perl.
 
Je vais voir sur cpan.org
 
Et encore merci

Reply

Marsh Posté le 21-08-2002 à 11:22:27    

Tu veux obtenir en résultat le nbre de sec écoulées entre le 1er janvier 70 et le jour + heure reçu en saisie ?
 
Bah, dans ce cas, fais-toi une fonction qui calcule le truc, nan ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 21-08-2002 à 11:25:31    

Aricoh a écrit a écrit :

Tu veux obtenir en résultat le nbre de sec écoulées entre le 1er janvier 70 et le jour + heure reçu en saisie ?
 
Bah, dans ce cas, fais-toi une fonction qui calcule le truc, nan ?




 
exact.
je pensais qu'il existait déjà une fonction de ce type en perl.
Dommage...
 
merci


Message édité par gratter_dede le 21-08-2002 à 11:26:32
Reply

Marsh Posté le 21-08-2002 à 11:27:53    

ben tu utilise le module Timelocal qui fait l'inverse de localtime, et c'est pile poil ce que tu veux.  
TIMTOWTDI


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 23-08-2002 à 10:46:13    

ca marche ok

Reply

Marsh Posté le 23-08-2002 à 20:52:31    

jz sais :)


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 23-08-2002 à 20:55:39    

eval {
  $a += die 2  ;
};
if ( $@ ) { $a = $a-1 ; )
a votre avis ca compile ca ? lol premiere tentative de ma part dobfusquer.  


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 26-08-2002 à 09:40:30    

ca compile ton morceau de prog

Reply

Marsh Posté le 27-08-2002 à 12:44:10    

mais ca fait pas ce qui est voulu malheuresement


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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