fichier PM [PERL] - Perl - Programmation
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;
}
#----------------------------------------------------------------
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"
Marsh Posté le 21-08-2002 à 08:58:33
Un package Perl (.pm) doit contenir les éléments suivants :
Code :
|
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 :
|
Très important : tout package doit se terminer par une ligne contenant 1;
En espérant t'avoir un ch'tit peu aidé ...
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 ?
Marsh Posté le 21-08-2002 à 11:03:14
ca existe pas mktime en perl
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 ?
Marsh Posté le 21-08-2002 à 11:09:03
Je te donne 2 exemples concernant l'utilisation de time() et de localtime() :
Code :
|
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 :
|
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
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
Marsh Posté le 21-08-2002 à 11:10:09
cpan.org je veux dire
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 :
|
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.
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
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 ?
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
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
Marsh Posté le 23-08-2002 à 20:52:31
jz sais
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.
Marsh Posté le 27-08-2002 à 12:44:10
mais ca fait pas ce qui est voulu malheuresement
Marsh Posté le 20-08-2002 à 15:29:14
Vous savez comment utiliser un fichier pm dans un script perl ?