Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

juste une question comme ça...

7 réponses
Avatar
kurtz le pirate
bonsoir.

je me demandais s'il était possible qu'un script perl se lise lui même
et teste par exemple la présence de déclaration d'une variable à la
ligne xxx...

aucune application particuliere... juste pour la reflexion :)

--
klp

7 réponses

Avatar
Stéphane Zuckerman
bonsoir.

je me demandais s'il était possible qu'un script perl se lise lui même
et teste par exemple la présence de déclaration d'une variable à la
ligne xxx...

aucune application particuliere... juste pour la reflexion :)




ben

#!/usr/bin/perl
use strict;
use warnings;

open(my $fh, "<", $0) or die $!;

print while (<$fh>);

close($fh) or warn $!;

Donc oui, on peut. :-)

Avatar
Paul Gaborit
je me demandais s'il était possible qu'un script perl se lise lui
même et teste par exemple la présence de déclaration d'une variable
à la ligne xxx...



À (at) Thu, 02 Mar 2006 01:32:26 +0100,
Stéphane Zuckerman écrivait (wrote):
#!/usr/bin/perl
use strict;
use warnings;

open(my $fh, "<", $0) or die $!;

print while (<$fh>);

close($fh) or warn $!;

Donc oui, on peut. :-)


Oui, on peut... mais pas en passant par $0 (même si parfois ça
marche).

Le plus simple est d'utiliser le FileHandle DATA qui existe si votre
script se termine par __END__ et qui est positionné juste après. Si on
le ramène à zéro, on peut relire tout le script :

------------------------------------------------------------
#!/usr/bin/perl -w
seek DATA, 0, 0;
while(<DATA>) {
print;
}
__END__
------------------------------------------------------------

Mais rien ne garantit que cela marchera avec les futures versions de
Perl (déjà, ça ne marche pas si on donne le script en ligne).

Le plus sûr serait d'utiliser les filtres. Pour en savoir plus :
perldoc perlfilter.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
David LE BOURGEOIS
bonsoir.


Bonjour.

je me demandais s'il était possible qu'un script perl se lise lui même
et teste par exemple la présence de déclaration d'une variable à la
ligne xxx...

aucune application particuliere... juste pour la reflexion :)


Comme ça, je dirai :

---8<-------
#!/usr/bin/perl -w

use strict;

#my $var1;
my $var2;
my $var3;

open F, $0;
print grep /^[^#]*[$]var/, (<F>)[4 .. 6];
close F;
---8<-------

Mais comment faire dans le cas de perl -e ?

--
David LE BOURGEOIS
e-mail : david.lebourgeois (at) free.fr
jabber : david.lebourgeois (at) jabber.fr

Avatar
kurtz le pirate
In article ,
Paul Gaborit wrote:

...
Mais rien ne garantit que cela marchera avec les futures versions de
Perl (déjà, ça ne marche pas si on donne le script en ligne).

Le plus sûr serait d'utiliser les filtres. Pour en savoir plus :
perldoc perlfilter.


mais comment tu fais pour tout savoir ? :)))


--
klp

Avatar
Stéphane Zuckerman
Le plus sûr serait d'utiliser les filtres. Pour en savoir plus :
perldoc perlfilter.



mais comment tu fais pour tout savoir ? :)))


C'est un informagicien perlien chevronné.


Avatar
Jean-Marc FRIGERIO
Stéphane Zuckerman wrote:

Le plus sûr serait d'utiliser les filtres. Pour en savoir plus :
perldoc perlfilter.



mais comment tu fais pour tout savoir ? :)))


C'est un informagicien perlien chevronné.


Salut,

Peux-être qu'il utilise plus que nous (je m'inclue dans ce nous et je
n'émets aucune critique sur cette question dont la réponse m'intéresse)

la commande magique:
echo '16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq'|dc



Avatar
Paul Gaborit
À (at) Thu, 02 Mar 2006 18:13:33 +0100,
kurtz le pirate écrivait (wrote):
mais comment tu fais pour tout savoir ? :)))


Quelques années d'expériences font toute la différence ;-) mais :

1- Je ne sais pas tout, loin de là (dernier exemple en date dans ce
forum : UTF8).

2- La traduction des documentations est une activité qui demande un
peu de temps mais permet d'apprendre (ou de redécouvrir) énormément de
choses... surtout si on prend le temps de tester les nouveautés qu'on
découvre. Il va d'ailleurs falloir que je m'y remette pour rester à
jour. Vous êtes les bienvenues pour aider !

3- L'enseignement, la recherche, l'administration système/réseau et le
développement amènent aussi à rechercher des solutions dans de
nombreux domaines.

Et j'oubliais : Google et CPAN !

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>