comment passer des données XML au script perl sans importer le module parsingur xml?

Contexte:

Un script perl doit être exécuté sur différents serveurs (tous sous AIX unix). Le script perl a besoin des données d’un script XML. Il suffit de lire les données, aucune écriture ou autre action de modification. Le contenu du script xml change parfois.

Problème:

Je ne peux pas utiliser le module d’parsingur xml (comme XML :: LibXML) dans le script perl, car le serveur aix n’installe pas le module et je ne souhaite pas les installer un par un. Il existe de nombreux serveurs AIX.

Il y a un serveur Linux (Red Hat Linux) qui a installé le module XML. Et chaque serveur AIX peut y accéder.

Toute façon de transmettre les données XML au script Perl, alors que le module xml n’est pas nécessaire? Comme d’abord parsingr le xml sur le Linux, puis passer la sortie en entrée du script perl? Je ne sais pas si c’est réalisable.

Si le XML n’est pas complexe, vous pouvez écrire un script simple qui le convertit dans un autre format. comme le simple hash, utilisez Data :: Dumper pour le vider dans un fichier et évaluez la sortie sur votre AIX.

Si c’est complexe, vous devez créer votre propre représentation en mémoire du fichier XML (en notant les atsortingbuts, les éléments enfants, les noeuds de texte, les espaces de noms, etc.).

exemple de code à évaluer: (non testé)

# read the data to variable open my $fh, "<", "dumpfile.txt" or die "file not found"; my $dump = do { local $/ = <$fh> }; close $fh; # eval the dump my $VAR1; eval $dump; 

Si vous avez un schéma .xsd pour les données XML disponibles (avoir un schéma est toujours une bonne idée), vous pouvez utiliser XML::Comstack pour transformer les données XML en une structure de données perl. XML::Comstack est également livré avec un script de commodité xml2yaml pour créer une représentation YAML.

Un autre module populaire pour transformer des données XML en structures de données Perl est XML::Simple . Malheureusement, comme XML::Simple n’a pas de schéma disponible, il est souvent difficile de deviner comment créer la structure de données (c’est-à-dire si elle est sur le sharepoint créer une valeur scalaire ou une valeur de tableau), menant à des sursockets. La documentation de XML::Simple dit explicitement que l’utilisation de ce module est déconseillée.

Une fois que vous avez la structure de données, il vous suffit de choisir le format de sérialisation (YAML, JSON, Storable, Data :: Dumper …) et de transférer les données vers les autres systèmes.

Créer une représentation en mémoire raisonnablement à l’épreuve du temps va nécessiter beaucoup de travail et des sessions de débogage frustrantes, la réponse de @ Slaven est une meilleure solution.

Juste pour vous donner une autre option, vous pouvez également: télécharger un module CPAN sans dépendance comme https://metacpan.org/pod/XML::TinyXML ou https://metacpan.org/pod/XML::Tiny n’importe où, et copiez-le sur les machines AIX lorsque vous copiez votre propre script. Par exemple, vous pouvez simplement placer le fichier XML / TinyXML.pm dans un dossier avec votre script et l’utiliser à partir de votre script en utilisant FindBin , puis copier le dossier dans son ensemble sur les machines AIX.