Il s'agit de la commande perldlp qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
perldl - Shell simple pour PDL (voir aussi pdl2)
SYNOPSIS
Utilisez PDL de manière interactive :
bash$perldl
pdl> $a = séquence(10) # ou toute autre commande perl ou PDL
bash$pdl
pdl> print "Bonjour tout le monde !\n" ;
Exécutez un script :
bash$ chat > pdfscript
#!/usr/bin/pdl
print "Bonjour tout le monde !\n" ;
...
DESCRIPTION
Le programme perl est un simple shell (écrit en perl) pour une utilisation interactive de PDL. Ce
se compose d'une interface de ligne de commande qui prend en charge l'interprétation immédiate de perl
commandes et expressions. Les expressions Perl, y compris les constructions PDL, peuvent être saisies
directement au clavier et sont compilés et exécutés immédiatement. La syntaxe n'est pas
exactement identique à Perl, dans la mesure où, dans la plupart des cas, la fin d'une ligne provoque immédiatement
l'exécution de la commande entrée jusqu'à présent (aucun ';' de fin n'est requis).
Le synonyme M est un exécutable compilé qui est utile comme interpréteur de script sous UNIX
syntaxe shebang ("#!"). Ceci est utile pour générer et réexécuter un journal de commandes
les fichiers de perl.
L'exposition perl shell exécute un fichier de démarrage initial ("~/.perldlrc") qui peut être utilisé pour précharger
modules perl ou configurer l'environnement global perl. Il dispose d'un mécanisme de chemin pour
chargement automatique des sous-routines perl. Il existe un mécanisme d'historique de commande et plusieurs autres
fonctionnalités utiles telles que le prétraitement des commandes, les raccourcis pour les commandes couramment utilisées telles que
comme "print", et la possibilité d'exécuter du code arbitraire chaque fois qu'une invite est imprimée.
En fonction de vos paramètres de configuration, perl peut être configuré pour honorer ou ignorer le ^D
(fin de fichier) lorsqu'il est envoyé depuis un terminal, ou pour tenter de faire la bonne chose
lorsqu'une construction de bloc couvrant plusieurs lignes est rencontrée.
perl et M prend en charge plusieurs options de ligne de commande, qui sont discutées vers la fin de
ce document.
Références Manuel & en ligne vous aider
Le manuel de référence PDL et l'aide en ligne sont disponibles dans perl, En utilisant l' vous aider
et à propos commandes (qui peuvent aussi être abrégées ? et ??.) Le vous aider commande seul
imprime un résumé de la syntaxe de l'aide, et vous aider imprimera la documentation POD à partir de
le module que vous mentionnez (POD est le format Perl pour intégrer la documentation dans votre perl
code; voir perlpod pour plus de détails).
Si vous incluez de la documentation POD dans vos sous-programmes de chargement automatique (voir chemin mécanisme au dessous de),
puis les deux vous aider et à propos le trouvera et pourra le formater et l'afficher à la demande.
Histoire mécanisme
Si vous avez installé les modules perl ReadLines et ReadKeys, alors perl prend en charge un
historique et mécanisme d'édition de ligne utilisant des touches d'édition similaires à emacs. Les 500 derniers
les commandes sont toujours stockées dans le fichier .perldl_hist dans votre répertoire personnel entre
séances. Définissez $PERLDL::HISTFILESIZE pour modifier le nombre de lignes enregistrées. La commande " je
[nombre]" vous montre les dernières commandes "nombre" que vous avez tapées, où "nombre" est par défaut 20.
par exemple:
bash$perldl
ReadLines activé
pdl> $a = rfits "foo.fits"
BITPIX = -32 taille = 88504 pixels
Lecture 354016 octets
ÉCHELLE B = && BZÉRO =
pdl> journal imag($a+400)
Affichage de l'image 299 x 296 de 4.6939525604248 à 9.67116928100586 ...
Command efficace
Si vous entrez une commande simple au perl ligne de commande, il est immédiatement exécuté dans un
Perl "eval()". L'environnement est presque identique à celui d'un script perl, avec
quelques exceptions importantes :
· $_ n'est pas conservé entre les lignes
$_ est utilisé pour contenir la ligne de commande pour le traitement initial, donc au début de
traitement de chaque ligne de commande, $_ contient la commande elle-même. Utiliser des variables autres
que $_ pour stocker des valeurs sur plusieurs lignes.
· La portée n'est pas préservée entre les lignes
Chaque ligne de commande est exécutée dans un bloc "eval" séparé au sein de perl, donc la portée
les commandes telles que "my" et "local" peuvent ne pas fonctionner exactement comme prévu - en particulier,
si vous déclarez une variable avec "my", elle est locale à la ligne de commande particulière sur
laquelle vous avez tapé la commande "my", ce qui signifie qu'elle s'évaporera avant la prochaine
l'invite est imprimée. (Vous pouvez utiliser des variables "my" dans un bloc multiligne ou pour isoler
valeurs dans une seule ligne de commande, bien sûr).
REMARQUE : pdl2 préserve la portée lexicale entre les lignes.
· L'exécution est immédiate
Dans la plupart des cas, dès que vous terminez une ligne d'entrée, la ligne est analysée et
réalisé. Cela rompt la dépendance normale de Perl vis-à-vis des points-virgules comme délimiteurs de commandes.
Par exemple, l'expression sur deux lignes
imprimer "Bonjour",
"monde";
imprime la phrase "Hello world" en Perl, mais (dans la plupart des cas) "Hello" dans
perl.
· Exécution multiligne
En mode multiligne (activé par défaut, voir coquille les variables, au dessous de), perl
recherche des recherches de constructions de type bloc avec des accolades, des parenthèses, des guillemets,
et les délimiteurs associés. Si vous laissez une telle construction ouverte, perl accepte plus de lignes
d'entrée jusqu'à ce que vous fermiez la construction ou terminiez explicitement l'expression multiligne avec
^D. Suivant l'exemple ci-dessus, la phrase
{ imprimer "Bonjour",
"monde"; }
affichera "Hello world" à partir de Perl ou (en mode multiligne) perl.
Avertissement: L'analyse multiligne utilise le module Text::Balanced de Damian Conway, qui
contient quelques défauts -- il peut donc être trompé par des opérateurs de type guillemets tels que "q/.../",
inclus la documentation POD, des citations "<<" multi-lignes, et quelques-uns particulièrement bizarres-mais-
correspondances "m/.../" et substitutions "s/.../.../" valides. Dans de tels cas, utilisez ^D pour fermer
la construction multiligne et force la compilation et l'exécution.
Si vous souhaitez conserver ce comportement dans un script (par exemple pour rejouer un journal de commandes
déposer; voir ci-dessous comment en créer un), vous pouvez utiliser M au lieu de perl comme interprète
dans la ligne shebang initiale du script.
Terminer "perldl"
Une session "perldl" peut être terminée avec l'une des commandes "quit", "exit" ou la
raccourcis "x" ou "q". Si la gestion EOF est activée (valeur par défaut), vous pouvez également taper ^D
à l'invite de commande.
Si l'entrée de commande n'est PAS un terminal (par exemple si vous exécutez à partir d'une commande
fichier journal), alors EOF se terminera toujours perl.
Terminer commandes (Ctrl-C manutention)
Les commandes exécutées dans "perldl" peuvent être interrompues prématurément en utilisant "Ctrl-C" (ou
quelle que soit la séquence de touches qui envoie un signal INT au processus sur votre terminal). A condition que votre
Le code PDL n'ignore pas les "sigint", cela devrait vous renvoyer à la commande "perldl"
rapide:
pdl> $result = start_lengthy_computation()
Ctrl-C détecté
pdf>
Raccourcis et alias
· Le shell alias "p" pour être une forme courte pratique de "print", par exemple
pdl> p ceux 5,3
[
[1 1 1 1 1]
[1 1 1 1 1]
[1 1 1 1 1]
]
· "q" et "x" sont des raccourcis pour "quit".
· "l" liste le tampon d'historique
pdl> l # liste les 20 dernières commandes
pdl> l 40 # liste les 40 dernières commandes
· "?" est un alias pour l'aide
pdl> ? pdl2 # obtenir de l'aide pour le nouveau shell pdl2
· "??" est un alias pour apropos
pdl> ?? PDL::Doc
· help, apropos, usage et sig : tous les mots après ces commandes sont utilisés textuellement et non
évalué par perl. Ainsi, vous pouvez écrire, par exemple,
pdf> aide aide
au lieu de
pdf> aide 'aide'
Ligne de commande Options
perl et M prend en charge plusieurs options de ligne de commande pour ajuster le comportement de la session.
La plupart d'entre eux sont équivalents à des commandes qui peuvent être saisies au pdf> rapide. Elles sont:
-surabondance
Chargez OpenGL au démarrage du shell (le module perl OpenGL, disponible à partir de
CPAN doit être installé). Cela permet le traitement de la boucle d'événement readline. Ne pas utiliser avec
-merci.
-tk Charger Tk lors du démarrage du shell (le module perl Tk, qui est disponible à partir du CPAN doit
être installé). Cela permet le traitement de la boucle d'événement readline. Ne pas utiliser avec -glut.
-f fichier
Charge le fichier avant de traiter toute entrée utilisateur. Toute erreur lors de l'exécution de
le fichier sont fatales.
-w S'exécute avec les messages d'avertissement (c'est-à-dire les avertissements perl normaux "-w") activés.
-Module M
Charge le module avant de traiter toute entrée utilisateur. Comparez "perl" correspondant
interrupteur.
module -m
Décharge le module avant de traiter toute entrée utilisateur.
-Je répertoire
Ajoute un répertoire au chemin d'inclusion. (c'est-à-dire le tableau @INC) Comparez "perl" correspondant
interrupteur.
-V Imprime un résumé de la configuration PDL. Cette information doit être incluse avec tout bogue PDL
rapport. Comparez le commutateur "perl" correspondant.
L'exposition Commencez filet ~/.perldlrc
Si le fichier ~/.perldlrc est trouvé, il provient au démarrage pour charger les modules par défaut, définissez
variables shell, etc. S'il n'est PAS trouvé, le fichier de distribution PDL/default.perldlrc is
lire à la place. Celui-ci charge différents modules jugés utiles par défaut, et qui assurent
compatibilité avec la v1.11. Si vous n'aimez pas cela et que vous voulez un ensemble plus rationalisé de votre
propres modules préférés simple créez les vôtres ~/.perldlrc. Vous pouvez commencer par le
existant PDL/default.perldlrc comme modèle car il ne sera pas sourcé une fois que vous aurez remplacé
avec votre propre version.
Pour définir encore plus de valeurs par défaut locales, le fichier local.perldlrc (dans le répertoire courant) est
sourcé s'il est trouvé. Cela vous permet de charger des modules et de définir des sous-routines pour le projet dans le
répertoire actuel.
Le nom est choisi spécifiquement parce qu'il a été trouvé que les fichiers cachés n'étaient PAS recherchés dans ces
circonstances.
Le fichier de démarrage devrait normalement inclure "use PDL::AutoLoader;", comme la plupart des plus beaux
les fonctionnalités interactives ne fonctionneront pas sans cela.
coquille les variables
Variables du shell : (Note: si vous n'aimez pas les valeurs par défaut, modifiez-les dans ~/.perldlrc)
· $PERLDL::ESCAPE - valeur par défaut '#'
Toute ligne commençant par ce caractère est traitée comme un échappement de shell. La valeur par défaut
est choisi car il échappe au code de l'interpréteur perl standard.
· $PERLDL::HISTFILESIZE - valeur par défaut 500
Il s'agit du nombre de lignes de l'historique des commandes du shell perldl à conserver.
· $PERLDL::PAGER - valeur par défaut "plus"
Programme externe pour filtrer la sortie des commandes. L'utilisation de "plus" imprime une sortie
écran à la fois. Sous Unix, la configuration page(1) et $PERLDL::PAGER vers "tee -a outfile"
conservera un enregistrement de la sortie générée par les commandes perldl suivantes (sans
pagination).
· $PERLDL::PROMPT - valeur par défaut 'pdl> '
Assez dit, mais peut également être défini sur une référence de sous-programme, par exemple $PERLDL::PROMPT =
sub {join(':',(gmtime)[2,1,0]).'> '} met l'heure actuelle dans l'invite.
· $PERLDL::MULTI - valeur par défaut 1
Si cela est défini sur une valeur vraie, alors perldl analysera les blocs perl multi-lignes : votre
l'entrée ne sera pas exécutée tant que vous n'aurez pas terminé une ligne sans opérateur de groupe en attente
(comme des guillemets, des blocs, des parenthèses ou des crochets) toujours actifs. Lignes de continuation
avoir une invite différente qui vous montre quels délimiteurs sont encore actifs.
Notez qu'il ne s'agit pas (encore !) d'un parseur perl complet. En particulier, Text::Balanced
semble pouvoir ignorer les opérateurs de guillemets tels que "q/ ... /" dans une ligne, mais pas
pour pouvoir les étendre à travers les lignes. De même, il n'y a pas de support pour le '<<'
.
Les chaînes conventionnelles multilignes et les regroupements {}, [] et () sont bien pris en charge.
· $PERLDL::NO_EOF - valeur par défaut 0/1 sur MSWin32
Protège contre l'utilisation accidentelle de "^D" depuis le terminal. Si cela est défini sur un vrai
value, alors vous ne pouvez pas quitter accidentellement perldl en tapant "^D". Si vous le définissez sur un
valeur supérieure à 1 (et PERLDL::MULTI est défini), alors vous ne pouvez pas utiliser "^D" pour quitter
commandes multilignes non plus. Si vous transférez des commandes à partir d'un fichier ou d'un tube, cela
variable n'a aucun effet.
· $MAISON
Le répertoire personnel de l'utilisateur
· $PERLDL::TERME
Il s'agit de l'objet Term::ReadLine associé au shell perldl. Il peut être utilisé par
routines appelées depuis perldl si votre commande est interactive.
· $PDL ::toolongtoprint
La taille maximale des pdls à imprimer (par défaut à 10,000 éléments). Ce n'est pas seulement un
variable "perldl" ou "pdl2" mais c'est quelque chose qui est généralement nécessaire dans un
session de débogage interactive.
Exécuter scripts à partir de le "perldl" prompt
Un idiome utile pour développer des scripts perldl ou des fonctions d'édition en ligne est
pdl> # script emacs &
-- ajouter le code perldl au script et enregistrer le fichier
pdl> faire 'script'
-- remplacez votre éditeur de fenêtre préféré par 'emacs' (vous devrez peut-être aussi changer
le '&' sur les systèmes non Unix).
Exécuter à nouveau "do 'script'" met à jour toutes les variables et définitions de fonction à partir du
version actuelle de 'script'.
Exécuter perl scripts à partir de le commander en ligne
Les scripts PDL ne sont que des scripts perl qui utilisent PDL (et éventuellement PDL::NiceSlice).
Mais pour les vrais paresseux, perldl peut être invoqué comme interpréteur de script. Parce que perldl est
lui-même un script perl interprété, la plupart des unices ne vous permettront pas de dire "#!/usr/bin/perldl"
en haut de votre script.
Au lieu de cela, dites "#!/usr/bin/pdl" et votre script sera exécuté exactement comme si vous l'aviez tapé,
ligne par ligne, dans le shell perldl.
Command prétraitement
REMARQUE : cette fonctionnalité est utilisée par défaut par PDL::NiceSlice. Voir ci-dessous pour en savoir plus sur le tranchage
à l'invite "perldl"
Dans certains cas, il est pratique de traiter les commandes avant qu'elles ne soient envoyées à perl pour
exécution. Par exemple, c'est le cas où le shell est présenté à des personnes
peu familier avec perl mais qui souhaitent profiter des commandes ajoutées localement (par exemple par
en citant automatiquement les arguments de certaines commandes).
*REMARQUE* : L'interface de prétraitement a changé par rapport aux versions précédentes ! L'ancienne façon d'utiliser
$PERLDL::PREPROCESS fonctionnera toujours mais est fortement déconseillé et pourrait disparaître dans le
avenir.
Vous pouvez activer le prétraitement en enregistrant un filtre avec la fonction "preproc_add".
"preproc_add" prend un argument qui est le filtre à installer. Un filtre est un Perl
référence de code (généralement définie dans un fichier de configuration local) qui sera appelée, avec le
chaîne de commande actuelle comme argument, juste avant l'exécution de la chaîne par le shell.
La chaîne modifiée doit être renvoyée. Notez que vous pouvez faire "perldl" complètement
inutilisable si vous ne retournez pas la chaîne modifiée ; arrêter de fumer est alors votre seule option.
Les filtres peuvent être supprimés du pipeline de prétraitement en appelant "preproc_del" avec le
filtre à supprimer comme argument. Pour savoir si un filtre est actuellement installé dans le
pipeline de prétraitement utiliser "preproc_registered":
pdl> preproc_add $myfilter à moins que preproc_registered $myfilter ;
Les versions précédentes de "perldl" utilisaient la variable $PERLDL::PREPROCESS. Cela fonctionnera toujours
mais doit être évité. Veuillez modifier vos scripts pour utiliser les fonctions "preproc_add" etc.
Le code suivant vérifierait un appel à la fonction 'mysub' et des arguments entre crochets avec
qw.
$filter = preproc_add sous {
mon $str = décalage ;
$str =~ s/^\s+//; # Supprimer l'espace de tête
si ($str =~ /^monsub/) {
my ($commande, $arguments) = split(/\s+/,$str, 2);
$str = "$commande qw( $arguments )"
if (défini $arguments && $arguments !~ /^qw/);
};
# Renvoie la chaîne d'entrée, modifiée selon les besoins
renvoie $str;
};
Cela convertirait :
pdl> mysub arg1 arg2
à
pdl> mysub qw( arg1 arg2 )
que Perl comprendra comme une liste. Évidemment, un peu plus d'efforts sont nécessaires pour
vérifier les cas où l'appelant a fourni une liste normale (et ne nécessite donc pas
cotation automatique) ou une interpolation variable est requise.
Vous pouvez supprimer ce préprocesseur en utilisant la fonction "preproc_del" qui prend un argument
(le filtre à supprimer, il doit s'agir du même coderef qui a été renvoyé d'un précédent
appel « preproc_add » :
pdl> preproc_del $filter;
Un exemple d'utilisation réelle peut être trouvé dans le script "perldl". regarde la fonction
"trans" pour voir comment le préprocesseur niceslicing est activé/désactivé.
"perldl" et PDL :: NiceSlice
PDL::NiceSlice introduit une syntaxe de découpage plus pratique pour les piddles. En cours
versions de "perldl" et "pdl2" niceslicing est activé par défaut (si le CPAN requis
modules sont installés sur votre machine).
Au démarrage, "perldl" vous indiquera si niceslicing est activé. Le message de démarrage sera
contiennent des informations à cette fin, quelque chose comme ceci :
shell perlDL v1.XX
PDL est livré avec ABSOLUMENT AUCUNE GARANTIE. Pour plus de détails, consultez le fichier
'COPYING' dans la distribution PDL. C'est un logiciel gratuit et vous
sont invités à le redistribuer sous certaines conditions, voir
le même fichier pour plus de détails.
ReadLines, NiceSlice activé
Lecture de /home/csoelle/.perldlrc...
Tapez « demo » pour les démos en ligne
PDL v2.XX chargé
Lorsque vous recevez un tel message indiquant que "NiceSlice" est activé, vous pouvez utiliser le
syntaxe de découpage :
pdl> $a = séquence 10 ;
pdl> p $a(3:8:2)
Pour plus de détails, consultez PDL::NiceSlice.
PDL::NiceSlice installe un filtre dans le pipeline de prétraitement (voir ci-dessus) pour activer le
syntaxe de découpage améliorée. Vous pouvez utiliser quelques commandes dans le shell "perldl" pour changer cela
prétraitement activé ou désactivé et vérifiez également explicitement les substitutions que le NiceSlice
filtre fait.
Vous pouvez activer et désactiver le filtre PDL::NiceSlice en tapant
pdl> trans # activer niceslicing
et
pdl> notrans # désactiver niceslicing
respectivement. Le filtre est activé par défaut.
Pour voir comment vos commandes sont traduites, activez les rapports :
pdl> rapport 1;
pdl> p $a(3:8:2)
traité p $a->nslice([3,8,2])
[3 5 7]
De même, désactivez les rapports si nécessaire
pdl> rapport 0;
pdl> p $a(3:8:2)
[3 5 7]
La création de rapports est désactivée par défaut.
Automatiquement exécuter votre propre crochets
La variable @PERLDL::AUTO est une simple liste de chaînes de code perl et/ou de référence de code. Ce
est utilisé pour définir le code à exécuter automatiquement à chaque fois que l'utilisateur entre une nouvelle ligne.
Un exemple simple serait d'imprimer l'heure de chaque commande :
pdl> push @PERLDL::AUTO,'print scalar(gmtime),"\n"'
pdl> imprimer des zéros(3,3)
Dim 3 mai 04:49:05 1998
[
[0 0 0]
[0 0 0]
[0 0 0]
]
pdl> imprimer "Boo"
Dim 3 mai 04:49:18 1998
Huer
pdf>
Ou pour vous assurer que toutes les modifications apportées au fichier 'local.perldlrc' sont toujours prises en compte :-
pdl> push @PERLDL::AUTO,"do 'local.perldlrc'"
Ce code peut bien sûr être mis *dans* 'local.perldlrc', mais attention :-) [Astuce : ajouter
"à moins que ($started++)" ci-dessus pour s'assurer que cela n'est fait qu'une seule fois !]
Un autre exemple d'application est un crochet pour les autochargeurs (par exemple, PDL::AutoLoader) à ajouter
code aussi qui leur permet de réanalyser automatiquement leurs fichiers pour les modifications. C'est
extrêmement pratique à la ligne de commande interactive. Puisque ce crochet n'est que dans la coquille
il n'impose aucune inefficacité aux scripts PDL.
Notez enfin qu'il s'agit d'une fonction très puissante - ce qui signifie qu'elle doit être utilisée avec
mise en garde!
Utiliser perldlp en ligne à l'aide des services onworks.net
