IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Récupérer un array php avec PERL


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut Récupérer un array php avec PERL
    Bonjour,

    Mon problème est le suivant, je ne sais pas comment faire pour récupérer dans mon script perl (valeurs.pl), un tableau tel que :
    $a = array('b','c','d','e');
    qui se trouve dans un fichier liste.php.

    J'ai cherché sur la toile mais je n'ai pas trouvé grand chose de très utile..

    Si vous avez une idée je suis preneur !

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Salut ciols,

    Si ce que tu veux c'est créer un array Perl en copiant et collant la définition d'un array provenant d'un source en Php, tu fais juste ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @a = ('b','c','d','e');
    et tu peux ensuite l'utiliser comme n'importe quel array en Perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # énumération du contenu
    foreach my $entree (@a) {
      say $entree;
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # premier élément
    say $a[0];
    etc.


    Eks

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Euh, pas bien clair à mes yeux, tu veux lire le fichier d'un script PHP à l'aide d'un script Perl et récupérer dans le script PHP une définition de tableau pour utiliser les valeurs dans un script Perl, c'est cela?

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2013
    Messages : 326
    Par défaut
    J'ai un fichier qui contient tous mes tableaux que j'utilise dans mes différents scripts php. Cependant, j'ai besoin d'un de ces tableaux dans un script PERL.
    Pour utiliser un de ces tableaux en php, il suffit d'include le fichier où les tableaux sont déclarés. Mais en PERL je ne sais pas comment faire.

    Je veux récupérer le tableau $infoTraf qui se situe dans liste.php et utilisé ce tableau dans mon script PERL (avoir en quelque sorte @infoTraf).

    La finalité de ça, c'est que si des modifications doivent survenir, il n'y aura qu'un seul fichier à modifier.

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Je dirais que tu dois "parser" ton fichier PHP à la recherche de ton tableau PHP, et remplir un tableau Perl avec son contenu.

    Peut-être que ce module pourrais-être d'une aide appréciable pour "parser le PHP : PHP::Interpreter

  6. #6
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Donc, ce tu veux c'est utiliser dynamiquement des données organisées sous forme d'un tableau Php contenues dans un fichier .php, en les obtenant lors de l'exécution de ton script Perl.

    Pour cela, la solution la plus directe me parait d'utiliser une regexp pour matcher ton tableau, de transformer la chaîne de texte récupérée de façon à ce qu'elle respecte la syntaxe Perl et de passer cela à la fonction eval.

    avec un fichier.php comme cela (fantaisiste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    echo 'Hello world';
    # les données contenues dans $infoTraf sont
    # également utilisées dans script.pl                                                                                                                                                                               
    echo '<hr>'; $infoTraf = array('b','c','d','e'); echo '<hr>';       # un commentaire
    ?>
    cela peut donner un script.pl comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/usr/bin/perl -T                                                                                                                                                                                                 
     
    use strict;
    use warnings;
    use Data::Dumper;
     
    my $file = 'fichier.php';
    my @infoTraf;
     
    open my $fh, $file or die "Could not open $file: $!";
     
    while (my $line = <$fh>)  {
        if ($line =~ /\$infoTraf\s*=\s*array\(([^;]+);/) {
            eval('@infoTraf = (' . $1 .';');
            last;
        }
    }
    close $fh;
     
    print Dumper(@infoTraf);
    qui produit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $VAR1 = 'b';
    $VAR2 = 'c';
    $VAR3 = 'd';
    $VAR4 = 'e';
    Utiliser un parser complet pour faire cela me parait démesuré.

    Perl est explicitement lancé en mode "tainted". Il faut bien vérifier le contenu que tu extraies d'un autre fichier avant de le passer à eval (ou à un parser d'ailleurs). C'est le rôle de la regexp que de valider cela. La regexp pourrait être rendue plus stricte encore si elle pouvait spécifier le type de contenu attendu (mais on ne le connaît pas car tu mets des données d'exemple). En l'état, elle est cependant déjà raisonnablement sécurisée et fonctionnera bien sous réserve que les données contenues dans le tableau ne comportent pas de point-virgule.


    Eks

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer un fichier (Sftp) avec perl
    Par kameln dans le forum Actualités
    Réponses: 1
    Dernier message: 23/08/2011, 22h18
  2. Récupérer un array php par la callback de .post
    Par bastian06n dans le forum jQuery
    Réponses: 2
    Dernier message: 27/09/2010, 14h34
  3. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  4. Réponses: 1
    Dernier message: 30/11/2006, 17h49
  5. Background d'un script php avec perl et unix (ou linux)
    Par fichiertempo dans le forum Web
    Réponses: 4
    Dernier message: 20/07/2006, 07h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo