OVH Cloud OVH Cloud

Question tordu : Du code dans une variable ? ? ?

6 réponses
Avatar
lasconic
Bonjour ... encore une question qui va peut etre vous sembler bête ...
Serait -il possible de stocker du code perl dans une variable puis de
faire executer ce code par la suite ? ? ?
Si je demande ça c pour utiliser la fonction Wanted a laquelle la
fonction Find du module File::Find fait reference ... sinon je vois pas
comment construire dynamiquement le contenu de cette fonction ....

Merci !

Lasconic

6 réponses

Avatar
Paul GABORIT
À (at) Wed, 25 Feb 2004 14:01:56 +0100,
lasconic écrivait (wrote):
Serait -il possible de stocker du code perl dans une variable puis de faire
executer ce code par la suite ? ? ?


Regardez du côté de la fonction 'eval' (perldoc -f eval). Mais...

Si je demande ça c pour utiliser la fonction Wanted a laquelle la fonction
Find du module File::Find fait reference ... sinon je vois pas comment
construire dynamiquement le contenu de cette fonction ....


... on évite d'utiliser 'eval' car, mal utilisée, elle peut amener à de gros
trous de sécurité. Si vous nous décriviez un peu plus votre besoin, peut-être
pourrions nous vous aiguiller vers des solutions plus adéquates.

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

Avatar
lasconic

À (at) Wed, 25 Feb 2004 14:01:56 +0100,
lasconic écrivait (wrote):

Serait -il possible de stocker du code perl dans une variable puis de faire
executer ce code par la suite ? ? ?



Regardez du côté de la fonction 'eval' (perldoc -f eval). Mais...


Si je demande ça c pour utiliser la fonction Wanted a laquelle la fonction
Find du module File::Find fait reference ... sinon je vois pas comment
construire dynamiquement le contenu de cette fonction ....



... on évite d'utiliser 'eval' car, mal utilisée, elle peut amener à de gros
trous de sécurité. Si vous nous décriviez un peu plus votre besoin, peut-être
pourrions nous vous aiguiller vers des solutions plus adéquates.

D'accord .. eval semble ok .. je vois a peu pres le genre de problème

que ça peut générer genre si on lui fait evaluer un "rm -f *", je vais
essayer de pas tomber dans le panneau ... en fait je vais recevoir une
instruction find -lqdf "njk" -size fsd -user etc .... (probablement via
un socket) ou une autre sorte de requete dans le but de retourner une
liste de fichier (de n'importe quel OS (notamment pour le user ;-)).
Donc je me verrais bien parser la chaine find - etc .... pour en faire
quelque chose qui pourrait etre le corps de la fonction wanted et le
tour est joué ... a priori si je parse find comme il faut je devrais
éviter les éceuils de securité. Non ?

Merci à vous Monsieur Gaborit ;-)

Lasconic


Avatar
LB
Est-ce que find2perl pourrait t'aider (livrée en standard avec PERL) ?

Je n'ai pas trop d'experience ailleurs que sous UNIX.

Mais ceci permet de générer du code PERL équivalent à la commande find
en commande ligne.

lasconic wrote:

À (at) Wed, 25 Feb 2004 14:01:56 +0100,
lasconic écrivait (wrote):

Serait -il possible de stocker du code perl dans une variable puis de
faire
executer ce code par la suite ? ? ?




Regardez du côté de la fonction 'eval' (perldoc -f eval). Mais...


Si je demande ça c pour utiliser la fonction Wanted a laquelle la
fonction
Find du module File::Find fait reference ... sinon je vois pas comment
construire dynamiquement le contenu de cette fonction ....




... on évite d'utiliser 'eval' car, mal utilisée, elle peut amener à
de gros
trous de sécurité. Si vous nous décriviez un peu plus votre besoin,
peut-être
pourrions nous vous aiguiller vers des solutions plus adéquates.

D'accord .. eval semble ok .. je vois a peu pres le genre de problème

que ça peut générer genre si on lui fait evaluer un "rm -f *", je vais
essayer de pas tomber dans le panneau ... en fait je vais recevoir une
instruction find -lqdf "njk" -size fsd -user etc .... (probablement via
un socket) ou une autre sorte de requete dans le but de retourner une
liste de fichier (de n'importe quel OS (notamment pour le user ;-)).
Donc je me verrais bien parser la chaine find - etc .... pour en faire
quelque chose qui pourrait etre le corps de la fonction wanted et le
tour est joué ... a priori si je parse find comme il faut je devrais
éviter les éceuils de securité. Non ?

Merci à vous Monsieur Gaborit ;-)

Lasconic






Avatar
Bruno Ethvignot
Si je demande ça c pour utiliser la fonction Wanted a laquelle la
fonction Find du module File::Find fait reference ... sinon je vois pas
comment construire dynamiquement le contenu de cette fonction ....


La fonction "File::Find" utilise cette méthode ci :

my $v = sub {
for (my $i = 0; $i < 5; $i++) {
print "$i $_[0] n";
}
};
$v->('test');

Cordialement,
--
Bruno Ethvignot
http://mozilla.tlk.fr/contact.php
http://linux.tlk.fr/contact.php

Avatar
lasconic
J'ai ue la même idée... donc j'ai un peu fouillé ... ça fonctionne que
pour unix... (en particulier parce que ça se sert de lstat qui ne permet
pas de recuperer l'utilisateur par exemple sous win) donc c pas vraimetn
super pour mon appli qui doit fonctionner sur plusieurs plate formes.
Par contre j'ai decouvert File:Find ... je m'y remets ... Merci
@+
Lasconic



Est-ce que find2perl pourrait t'aider (livrée en standard avec PERL) ?

Je n'ai pas trop d'experience ailleurs que sous UNIX.

Mais ceci permet de générer du code PERL équivalent à la commande find
en commande ligne.

lasconic wrote:


À (at) Wed, 25 Feb 2004 14:01:56 +0100,
lasconic écrivait (wrote):

Serait -il possible de stocker du code perl dans une variable puis
de faire
executer ce code par la suite ? ? ?





Regardez du côté de la fonction 'eval' (perldoc -f eval). Mais...


Si je demande ça c pour utiliser la fonction Wanted a laquelle la
fonction
Find du module File::Find fait reference ... sinon je vois pas comment
construire dynamiquement le contenu de cette fonction ....





... on évite d'utiliser 'eval' car, mal utilisée, elle peut amener à
de gros
trous de sécurité. Si vous nous décriviez un peu plus votre besoin,
peut-être
pourrions nous vous aiguiller vers des solutions plus adéquates.

D'accord .. eval semble ok .. je vois a peu pres le genre de problème

que ça peut générer genre si on lui fait evaluer un "rm -f *", je vais
essayer de pas tomber dans le panneau ... en fait je vais recevoir une
instruction find -lqdf "njk" -size fsd -user etc .... (probablement
via un socket) ou une autre sorte de requete dans le but de retourner
une liste de fichier (de n'importe quel OS (notamment pour le user ;-)).
Donc je me verrais bien parser la chaine find - etc .... pour en faire
quelque chose qui pourrait etre le corps de la fonction wanted et le
tour est joué ... a priori si je parse find comme il faut je devrais
éviter les éceuils de securité. Non ?

Merci à vous Monsieur Gaborit ;-)

Lasconic








Avatar
Michel Rodriguez
lasconic wrote:

Par contre j'ai decouvert File:Find ... je m'y remets


Avant de te plonger dans File::Find tu peux peut etre jeter un oeil du
cote de File::Find::Rule, http://search.cpan.org/dist/File-Find-Rule,
qui se presente comme une alternative plus moderne a File::Find. Perso
j'en suis reste a File::Find, j'y suis habitue, mais j'ai entendu du
bien de File::Find::Rule.

--
Michel Rodriguez
Perl &amp; XML
http://www.xmltwig.com