Salut,
Nouvel article dans les cours et tutoriel Perl : Créer un exécutable à partir de sources Perl
Vos commentaires, corrections et remarques sont les bienvenues.
Merci !
Version imprimable
Salut,
Nouvel article dans les cours et tutoriel Perl : Créer un exécutable à partir de sources Perl
Vos commentaires, corrections et remarques sont les bienvenues.
Merci !
Très intéressant. Une idée de comment ça se passe sous strawberry avec PAR ?
Je pense que mon article pourrait s'utiliser également pour StrawberryPerl si ce dernier utilise ppm. Mais je n'ai pas testé. Peux-tu me dire s'il y a le gestionnaire ppm sous Strawberry ?
Bonjour,
Pour mon application Kandela j'ai utilisé Strawberry, et ça marche sans problème.
(J'ai pas de Windows vierge pour retester, mais j'ai pas l'impression d'avoir du faire autre chose)Code:
1
2 cpan install PAR::Packer pp -o kandela.exe kandela.pl
PS : C'est chouette Packer sans balise code "cpan install PAR::Packer"
:ccool: pour Strawberry.
Sinon pour PAR::Packer sans balise, il faut utiliser la balise [noparse]PAR::Packer[/noparse].
Rien de bien constructif à dire, juste : merci beaucoup! ça marche impeccable (Windows 7 64-bits)
Bonjour,
Merci pour ce tutoriels Perl. il mériterai néanmoins quelques mis a jours (lien nmake faut par example).
J'ai réussit a compiler avec :
puis :Code:cpan> install PAR::Packer
Qui a l'air de fonctionner.Code:
1
2 c:\>pp -o prog.exe "c:\prog\connector.pl"
par contre, lors de l'execution, j'ai ce message d'erreur :
je précise que, dans la même commande msdos, "perl prog.pl" fonctionne correctementCode:
1
2
3
4
5 c:\>prog.exe The locale codeset (cp1252) isn't one that perl can decode, stopped at Encode/Locale.pm line 87. Compilation failed in require at LWP/UserAgent.pm line 975. Compilation failed in require at script/prog.pl line 11. BEGIN failed--compilation aborted at script/prog.pl line 11.
Merci d'avance pour l'aide
Antoine
Bonjour,
J'ai reinstallé Strawberry sur un XP SP3 vierge, et je n'ai pas eu de problème avec StrawBerry, par contre si on fait un
il va être en erreur. Il y a un patch de StrawBerryCitation:
cpan install PAR::Packer
http://strawberryperl.com/pack age/k...patched.tar.gz
On detar, on va dans le répertoire, et
On a bien 3 erreurs au "test" mais ça fonctionne quand même.Code:
1
2
3 dmake dmake test dmake install
Bonjour,
Très bon article.
J'ai pu convertir un .pl en .exe avec PAR, grâce à ton travail.
Merci d'avoir tapé un code complet pour l'installation !
Travail très utile, bravo.
Le tutoriel a été mis à jour, notamment le programme permettant d'installer PAR::Packer dans le chapitre « *Solution miracle ». Le programme peut être lancé sous Windows avec ActivePerl ou Strawberry Perl, ou sous Linux/Mac OS. En fonction de l'environnement, il lance les commandes adéquates. J'ai introduit également l'installation de modules Tk afin de pouvoir utiliser l'utilitaire tkpp.
Il y a aussi deux options de pp (ou tkpp) qui n'existent plus.
Bonne utilisation et n'hésitez pas à me faire un retour si vous avez un souci.
MERCI djibril !
Super, juste un pb avec l'interface graphique tkpp :(
Jusqu'à ce jour je n'ai pas eu l'utilité de générer un exécutable, mais ma curiosité était trop grande, donc :
Sur Strawberry j'ai simplement fait un cpan install PAR::Packer passé comme une lettre à la poste :ccool:
En ligne de commande aucun pb, je réalise des exécutables qui fonctionnent parfaitement de gros pgm.pl contenant, entre autre, des appels à Tk ; Win32::API ; Win32::MediaPlayer...
En lançant l'interface graphique j'ai :
Donc je fais un install de Tk::Pod qui plante alors que tous les autres install du cpan ont toujours fonctionné jusqu'à présent.Code:
1
2
3 E:\_APPLI\Veille>tkpp You have to install this module : - Tk::Pod [try command : cpan -i Tk::Pod]
Durant l'installation j'ai un plantage de l'interpréteur Perl :!: avec :
NB : J'ai bien un dmake.exe dans C:\Strawberry\c\bin :?Code:
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 CPAN: CPAN::SQLite loaded ok (v0.203) Database was generated on Sun, 22 Feb 2015 03:33:31 GMT Running install for module 'Tk::Pod' CPAN: Digest::SHA loaded ok (v5.91) CPAN: Compress::Zlib loaded ok (v2.064) Checksum for C:\STRAWB~1\cpan\sources\authors\id\S\SR\SREZIC\Tk-Pod-0.9942.tar.gz ok CPAN: Archive::Tar loaded ok (v1.96) CPAN: File::Temp loaded ok (v0.2304) CPAN: YAML::XS loaded ok (v0.41) CPAN: Parse::CPAN::Meta loaded ok (v1.4414) CPAN: CPAN::Meta loaded ok (v2.141170) CPAN: Module::CoreList loaded ok (v3.11) Configuring S/SR/SREZIC/Tk-Pod-0.9942.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Generating a dmake-style Makefile Writing Makefile for Tk::Pod Writing MYMETA.yml and MYMETA.json SREZIC/Tk-Pod-0.9942.tar.gz C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK Running make for S/SR/SREZIC/Tk-Pod-0.9942.tar.gz cp Pod/Cache.pm blib\lib\Tk\Pod\Cache.pm cp Pod/Search.pm blib\lib\Tk\Pod\Search.pm cp Pod/Util.pm blib\lib\Tk\Pod\Util.pm cp Pod/SimpleBridge.pm blib\lib\Tk\Pod\SimpleBridge.pm cp Pod/WWWBrowser.pm blib\lib\Tk\Pod\WWWBrowser.pm cp Pod/Tree.pm blib\lib\Tk\Pod\Tree.pm cp Pod.pm blib\lib\Tk\Pod.pm cp Pod/Search_db.pm blib\lib\Tk\Pod\Search_db.pm cp Pod/FindPods.pm blib\lib\Tk\Pod\FindPods.pm cp More.pm blib\lib\Tk\More.pm cp Pod/Styles.pm blib\lib\Tk\Pod\Styles.pm cp Pod/Text.pm blib\lib\Tk\Pod\Text.pm cp Pod_usage.pod blib\lib\Tk\Pod_usage.pod C:\Strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- tkpod blib\script\tkpod pl2bat.bat blib\script\tkpod C:\Strawberry\perl\bin\perl.exe -MExtUtils::Command -e cp -- tkmore blib\script\tkmore pl2bat.bat blib\script\tkmore SREZIC/Tk-Pod-0.9942.tar.gz C:\STRAWB~1\c\bin\dmake.exe -- OK Running make test C:\Strawberry\perl\bin\perl.exe "-It" "-MTkTest" "-e" "check_display_test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/basic.t ......... ok t/cmdline.t ....... skipped: not on Windows t/more.t .......... ok t/optionalmods.t .. skipped: no Test::More and/or Devel::Hide modules t/pods.t .......... ok t/podtree.t ....... Dubious, test returned 255 (wstat 65280, 0xff00) All 5 subtests passed t/subclass.t ...... ok Test Summary Report ------------------- t/podtree.t (Wstat: 65280 Tests: 5 Failed: 0) Non-zero exit status: 255 Files=7, Tests=72, 15 wallclock secs ( 0.06 usr + 0.05 sys = 0.11 CPU) Result: FAIL SREZIC/Tk-Pod-0.9942.tar.gz C:\STRAWB~1\c\bin\dmake.exe test -- NOT OK //hint// to see the cpan-testers results for installing this module, try: reports SREZIC/Tk-Pod-0.9942.tar.gz Stopping: 'install' failed for 'Tk::Pod'.
Sinon en ligne de commande ça me va très bien !
MERCI !
[EDIT 08:05]
Pour info j'ai téléchargé Tk-Pod-0.9942-PPM520.tar.gz sur Bribes
Le tar -zxvf ne donne qu'un répertoire C:\Strawberry\Patch_et_Modules_TARGZ\blib\lib\Tk
J'ai copié ce Tk dans C:\Strawberry\perl\lib
Tkpp fonctionne !
- Fonctionne correctement sur ton test.pl, le test.exe s'exécute correctement
- Ne Fonctionne pas sur un gros Arabe.pl le Arabe.exe est bien généré mais ne s'exécute pas, il semble qu'il n'ait pas trouvé tous les modules ??? (Descripteur invalide dans console tkpp)
Le log en verbose 3 ne précise rien :
Bon rien de terrible pour moi, la ligne de commande qui génère l'exécutable correctement me suffit !Code:
1
2
3 C:\Strawberry\perl\site\bin\pp.bat: Packing E:\_APPLI\Arabe\Arabe.pl ... TROP LONG !
C'était juste pour faire remonter l'info... :)
Encore MERCI !
Merci pour ce retour, je vais revérifier cela et tester afin d'améliorer la processus d'installation.
Pour moi l'installation est impeccable !
Il y a juste une différence de fonctionnement suivant que j'utilise tkpp ou pp
Et en fait je viens de trouver, en partie du moins :
J'ai un module perso TestModule.pm dans le répertoire qui contient le source.pl
Quand je lance pp dans le répertoire courant, aucun pb il trouve le module, l'inclut dans le .exe, tout est OK
Quand je lance tkpp toujours dans le répertoire courant, il ne trouve pas le module perso, bien que je l'ajoute dans la liste et même si j'ajoute le répertoire et le fichier.pm dans "Add Files, Directories and shared librairies"...
Au lancement dans une console ouverte j'ai bien l'ano :
Si je lance la commande générée par tkpp dans le répertoire courant c'est OK !Code:
1
2
3
4
5
6
7 E:\_APPLI\Arabe>arabe Can't locate TestModule.pm in @INC (you may need to install the TestModule module) (@INC c ontains: CODE(0x33777d0) C:\Users\Michel\AppData\Local\Temp\par-4d696368656c\cache-8afa7bd 4f480807e95d7330beb843435a87abfdd\inc\lib C:\Users\Michel\AppData\Local\Temp\par-4d6963686 56c\cache-8afa7bd4f480807e95d7330beb843435a87abfdd\inc CODE(0x3012ae8) CODE(0x3012f98)) at script/Arabe.pl line 19. BEGIN failed--compilation aborted at script/Arabe.pl line 19.
:(Code:E:\_APPLI\Arabe>C:\Strawberry\perl\bin\perl.exe "C:\Strawberry\perl\site\bin\pp.bat" --output="E:\_APPLI\Arabe\Arabe.exe" --compress 6 --bundle "E:\_APPLI\Arabe\Arabe.pl"
Le script d'installation dans le tutoriel est OK alors, c'est bien.
Peux-tu m'envoyer le zip de ton programme Arabe ? Je vais faire des tests.
Il est beaucoup trop gros... et il faut des tas de fichiers pour le faire fonctionner...
Mais je reproduis facilement en prenant que le début :
Qui réclame TestModuleCode:
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 #!/usr/bin/perl #=================================================== # Auteur : dmganges avec l'aide précieuse de djibril # Date : 16/10/2012 # But : Cours d'arabe #=================================================== # Références croisées : # perl -MO=Xref Cours.pl # use strict; use warnings; use utf8; use Carp; use Tk; use Tk::LabFrame; use Tk::ROText; use Tk::Photo; use TestModule; # Perso, TestModule.pm doit exister dans répertoire courant use English '-no_match_vars'; use File::Spec; # Permet une meilleure gestion des noms des chemins sous tous les OS. use Encode; # Pour encoder notamment en iso-8859-16 les nom de fichier pour Win32::API use Config::Std; # Lecture/ecriture d'un fichier .ini use File::Basename; print "Coucou\n";
Au cas où :
TestModule.pm :
Mais il doit te parler :)Code:
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 #!/usr/bin/perl use strict; use warnings; use Carp; # verifie si un module perl est installé sur une machine sub module_non_installe { my $un_module = shift; eval "use $un_module;"; if ($@ !~ /^\s*$/) { return $@; } return; } # Retourne l'information de présence ou non du module sub exist_module { my @modules = @_; my @modules_non_installes = grep { module_non_installe($_) } @modules; if (@modules_non_installes != 0) { return ("ABSENT"); } return ("PRESENT"); } 1;
En résumé pptk ne trouve pas le module, qu'on précise ou non l'ajout dans l'interface graphique.
:merci:
J'ai vais voir comment améliorer tkpp.
MERCI à toi !
En fait ça fonctionne
Pour un module dans le répertoire courant il faut ajouter dans le deuxième bouton "Add Directories" celui qui génère avec -p et non -d
c'est peut-être là qu'il faut préciser au niveau des boutons...
Il reste une ano en rouge lors de la génération mais c'est OK
:ccool:
J'ai corrigé tkpp. Il sera prochainement disponible dans le module PAR::Packer.
MERCI beaucoup !
C'était déjà bluffant comme çà... c'est un SUPER boulot !
J'efface les images.
@+
Bonjour, pour ma part ça ne fonctionne pas, j'ai essayé de lancer le script magique mais j'obtiens cette erreur à la fin (j'ai ActivePerl)
j'ai pas installé nmake car je ne le trouve pas :sCode:
1
2
3
4
5
6
7
8 windres -i winres/pp.rc -o ppresource.coff --input-format=rc --output-format=cof f --target=pe-x86-64 'windres' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. dmake.exe: Error code 129, while making 'ppresource.coff' dmake.exe: Error code 255, while making 'subdirs' RSCHUPP/PAR-Packer-1.025.tar.gz C:\Perl64\site\bin\dmake.exe -- NOT OK
et je précise que je l'ai déjà installé y a quelque temps sur un autre pc avec strawBerry cette fois et ça fonctionnait.
Si l'un d'entre vous a une idée merci ;)
(ou l'une d'entre vous je suis pas regardant :ptdr: )
C'est tout le problème d'ActivePerl qui à ce jour ne met pas à disposition un nmake ou dmake pour les machines 64 bits (machines maintenant très répandues). Cela engendre des erreurs d'installation. Je conseille donc maintenant aux personnes d'utiliser Strawberry Perl. Et même si vous souhaitez garder votre ActivePerl sur votre PC, vous pouvez toujours installer la version portable de Strawberry Perl :ccool: !
Je reviens vers vous pour dire que je n'ai pas réussi ave strawberry portable... J'ai tenté pleins de choses sans jamais y arriver du coup j'ai changé activePerl par strawberry puis avec une petite bidouille (que je ne me rappelle plus) j'ai réussi a installer TKpp (Tk::Pod ne voulais pas s'installer correctement).
Finalement tout est fonctionnelle. Je m'apprête a faire un plugin netBeans pour lancer TKpp prérempli et j'ai essayé de regarder le code sans trop le comprendre (on vois pourquoi djibril est trop fort :) ). J'ai cru remarqué qu'on ne pouvait pas le lancer avec des paramètres ... Es ce que je me trompe ? (si je termine le plugin je suis dispo à le partager)
Merci
Au sujet de Tk::Pod, il y a un souci d'installation car il y a un test qui plante sous les machines Windows 64 bits (fuite mémoire), mais pour le moment, je n'ai pas trouvé la solution et l'auteur du module non plus. En attendant la solution consiste à forcer l'installation et tout est OK. D'ailleurs, dans mon tutoriel, le script le fait pour vous.
Sinon, quel est l'intérêt de lancer tkpp via ton plugin ? tu peux lancer la ligne de commande (pp) directement non ?
je crois que j'ai fais :
ppm install http://www.bribes.org/perl/ppm64/Tk-Pod.ppd pour installer tk::Pod
car même avec cpan -fi ça ne fonctionnais pas (peux venir de mon pc qui fais ce qu'il veux en ce moment)
Pour mon plugin l'idée c'est que je veux juste remplir le chemin du fichier perl, celui de l'exe, et précocher l'option GUI mais toujours laisser configurable après les autres options.
Si ce n'est pas possible j'essaierais de faire avec pp mais ça m'oblige à faire une gui pour les options et j'ai pas envie de refaire TKpp en Java (j'suis pas fan de ce langage).
Merci
tkpp permet de sauvegarder ou charger une configuration d'options. Cela n'est possible qu'une fois l'interface graphique ouverte. À ce jour, tkpp ne prend aucune option en ligne de commande.
Je pourrais le faire évoluer en donnant la possibilité de lancer tkpp avec l'option -load pour charger une configuration spécifique si besoin ! Mais ce sera tout, je ne donnerais pas la possibilité de mettre en ligne de commande le programme perl, les options gui... car cela n'a plus de sens après.
je comprend parfaitement ce que tu veux dire. Je vais voire à modifier mon plugin pour y mettre les principales option de TKpp.
Sinon c'est déjà du super boulot dans l'état. 8-)
Je vais modifier mon TKpp en attendant que je finisse mon plugin.
Merci
Bonjour,
Tout d'abord bravo pour cette contribution, très claire et pédagogique.
'exécution du script "Installer tout-en-un" se termine mal, avec une fenêtre pop-up affichant "par.exe a cessé de fonctionner".
Je joins la sortie console.
ligne 12 Il semblerait que ppm ne trouve pas MinGW, et dans les dernières lignes erreurs sur par.exe et dmake.exe
Une idée pour résoudre ce problème ?
Merci d'avance
Bonjour,
Peut-on savoir si tu es sur une machine 32 bits ou 64 bits ?
Quelle version d'ActivePerl utilises-tu ?
cela semble être 64 bits 5.16.1 selon perl -v :
This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x64-multi-thread
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2012, Larry Wall
Binary build 1601 [296175] provided by ActiveState http://www.ActiveState.com
Built Aug 30 2012 18:41:50
As-tu la possibilité de mettre ta version de Perl à jour ?
Bonjour,
oui, je viens de le faire :
perl -v :
This is perl 5, version 20, subversion 2 (v5.20.2) built for MSWin32-x64-multi-thread
(with 1 registered patch, see perl -V for more detail)
J'ai ensuite relancé ton script magique, mais encore erreur (voir document joint "par_instal_out_1.zip"), différente ce coup-ci,
selon les dernières lignes, il semble ne pas trouver 'windres' :
windres -i winres/pp.rc -o ppresource.coff --input-format=rc --output-format=coff --target=pe-x86-64
'windres' n'est pas reconnu en tant que commande interne
ou externe, un programme ex‚cutable ou un fichier de commandes.
dmake.exe: Error code 129, while making 'ppresource.coff'
dmake.exe: Error code 255, while making 'subdirs'
[32m RSCHUPP/PAR-Packer-1.025.tar.gz[0m
[31m C:\Perl64\site\bin\dmake.exe -- NOT OK[0m
PS: je suis allé voir où se trouve windres, il est ici :
C:\Perl64\site\lib\auto\MinGW\bin\windres.exe
dans la variable d'environnement PATH, je n'ai pas ce chemin, je n'ai que C:\Perl64\site\bin
Faut-il ajouter à la main ce chemin à PATH ?
Bon, ActivePerl me fatigue un peu. Je te recommande de désinstaller ActivePerl, de supprimer les répertoires C:\Perl et C:\Perl64, de supprimer les variables d'environnement Perl et d'installer la dernière version de StrawBerry Perl.
Puis tout devrait bien se passer.
Bonjour Djibril
Tout d'abord super travail que ce tutorial !
Toutefois, j'ai un problème que je n'arrive pas à résoudre
Sous Debian 7, j'ai installé PAR-Packer sans problème particulier et j'ai compilé mon script sans aucun message en retour
Quand je lance le binaire j'obtiens ce message mais le script continue normalementCode:pp -o omp_install omp_install.pl
J'utilise Term::UI et au bout de quelques commandes,Code:Use of uninitialized value in do "file" at /usr/local/share/perl/5.14.2/PAR.pm line 636.
j'ai ce message et là je ne sais pas comment m'en sortir, j'ai cherché sur le net mais n'ai trouvé aucune réponse récente satisfaisante :(Code:Can't locate utf8_heavy.pl in @INC (@INC contains: /tmp/par-726f6f74/cache-033c86ee906cf6977bd54bb067342207db40e367/inc/lib /tmp/par-726f6f74/cache-033c86ee906cf6977bd54bb067342207db40e367/inc CODE(0x2386060) CODE(0x2386738)) at /usr/share/perl/5.14/utf8.pm line 17.
Merci et encore bravo pour ton tuto
Bonjour,
Peux-tu faire un petit programme d'exemple qui génère ces erreurs et je testerai sous Debian.
Essaie peut-être d'ajouter -M utf8_heavy.pl dans ta ligne de commande pour assurer qu'il soit bien inclus dans l'archive PAR
Code:
1
2
3
4
5
6
7
8
9
10
11 Taisha:~/perl/forum $ cat hello.pl print "hello, @ARGV\n"; Taisha:~/perl/forum $ pp -o hello hello.pl Taisha:~/perl/forum $ ./hello puny earthlings hello, puny earthlings Taisha:~/perl/forum $ unzip -l hello | grep utf8 Taisha:~/perl/forum $ pp -o hello -M utf8_heavy.pl hello.pl Taisha:~/perl/forum $ unzip -l hello | grep utf8 407 11-21-2015 12:37 lib/utf8.pm 8025 11-21-2015 12:37 lib/utf8_heavy.pl Taisha:~/perl/forum $
Bonjour cmcmc
Merci pour cette réponse, cela a semble-t-il réglé le problème d'inclusion d'utf8_heavy.pl, je n'ai plus le second message
J'ai toujours celui-ci au lancement
mais ce n'est pas bloquant, si les experts que vous êtes savent comment supprimer ce dernier c'est topissimeCode:Use of uninitialized value in do "file" at /usr/local/share/perl/5.14.2/PAR.pm line 636
quand j'ai du mal avec un warning ou un message j'essaie d'habitude d'invoquer perl avecqui produit des traces verbeux... Ici peut-être peux-tu essayer d'ajouter unCode:perl -MCarp::Always
dans ton programme principal pour essayer de voir dans quel contexte précis ce warning est généré...Code:use Carp::Always;
Code:
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 Taisha:~/perl/forum $ cat diediedie.pl use strict; use warnings; use Carp::Always; sub foo { bar() } sub bar { qux() } sub qux { xyzzy() } sub xyzzy { die "oops" } foo() Taisha:~/perl/forum $ perl diediedie.pl oops at diediedie.pl line 8. main::xyzzy() called at diediedie.pl line 7 main::qux() called at diediedie.pl line 6 main::bar() called at diediedie.pl line 5 main::foo() called at diediedie.pl line 10 Taisha:~/perl/forum $ pp -o diediedie diediedie.pl Taisha:~/perl/forum $ ./diediedie oops at script/diediedie.pl line 8 main::xyzzy() called at script/diediedie.pl line 7 main::qux() called at script/diediedie.pl line 6 main::bar() called at script/diediedie.pl line 5 main::foo() called at script/diediedie.pl line 10 require main called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 636 PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x10d52bd8)', 1) called at script/main.pl line 26 require main called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 636 PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x10d52e90)') called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 428 PAR::import('PAR') called at -e line 954 eval {...} called at -e line 209 __par_pl::BEGIN() called at script/diediedie.pl line 0 eval {...} called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 638 PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x10d52bd8)', 1) called at script/main.pl line 26 require main called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 636 PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x10d52e90)') called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 428 PAR::import('PAR') called at -e line 954 eval {...} called at -e line 209 __par_pl::BEGIN() called at script/diediedie.pl line 0 eval {...} called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 638 PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x10d52e90)') called at /usr/lib/perl5/site_perl/5.10/PAR.pm line 428 PAR::import('PAR') called at -e line 954 eval {...} called at -e line 209 __par_pl::BEGIN() called at script/main.pl line 966 eval {...} called at -e line 969 Taisha:~/perl/forum $