En script shell Unix, nous vérifier l'état de sortie de la commande précédente en utilisant la valeur de
$?
où zéro est gage de succès. Comment puis-je le faire en Perl?questions de base PerlLorsque je cours
perl -V
je vois certains chemins répertoriés dans@INC
. Comment ajouter de nouveaux chemins à@INC
? Comment puis-je définir l'ordre des arguments dans la fonctionGetOptions
?Je veux-email
être le premier argument et s'il est donné comme deuxième argument, il devrait échouer.GetOptions( 'nemail' => sub {$ENV{EMAIL} = "Y"}, 'arg' => \$help );
Quelle est la différence entre les extensions
.pl
et.pm
? Quand dois-je utiliser l'extension.pm
?Lorsque j'écris
use File::Copy
, où se trouve le code? Quelles sont les variables d'environnement auxquelles accèdeuse
?
Répondre
Les commandes externes sont lancées avec le
system
function, elle fixe également le child error variable$?
/$CHILD_ERROR
. Au lieu de faire ces contrôles vous, utilisezautodie
:require IPC::System::Simple; use autodie qw(:all); system([0], 'foobar-command', '--option', '--yet-another-option'); # 0 is allowed as an exit status, others will throw an exception
constructions de programmation interne, par exemple sous-programmes des modules, utilisez la vérification des erreurs qui va au-delà de ce que vous savez de la programmation du shell. Il y a plus d'une façon de le faire. La plupart du type, le succès et l'échec est signalé par la valeur de retour d'une fonction, souvent
undef
signifie une défaillance, par ex. en lisant le documentation forFile::Copy
, nous apprenons que la valeur de retour est 0 pour l'échec et que l'autre variable d'erreur habituelle est définie.use English qw($OS_ERROR) use File::Copy qw(mv); my $source = '/does_not_exist'; my $destination = '/tmp'; unless (mv($source, $destination)) { warn "Move from $source to $destination failed: $OS_ERROR"; }
Une autre possibilité est des exceptions. Vous devez apprendre cela en détail: chapitre 13 de PBP et le chapitre 11 de EPP.
use Try::Tiny; my $string; try { $string = Encode::decode('UTF-8', $octets_buffer, Encode::FB_CROAK) } catch { warn "Decoding failed: $_"; }
Il est conçu de telle sorte que les arguments peuvent être dans un ordre aléatoire. Pourquoi le veux-tu comme ça? Il existe un paramètre de configuration appelé
require_order
, mais ce n'est pas exactement ce que vous voulez..pl
indique une bibliothèque Perl, tout comme une collection de sous-programmes, prête à être incluse viarequire
. Cela vient de plus de 10 ans. Les gens sur Windows aiment aussi donner cette extension aux programmes Perl, car le système d'exploitation est tellement centré sur l'extension et ne fonctionne pas confortablement avec les fichiers sans extension..pm
indique Perl module. Un module est juste une bibliothèque qui suit quelques conventions supplémentaires. C'est de l'ère Perl 5.File::Copy
se traduit au nom de fichierFile/Copy.pm
qui est dans l'un des chemins dans votre@INC
, pour plus de détails voir à nouveaurequire
. Sur mon système, ce serait dans/usr/lib/perl5
, par ex./usr/lib/perl5/5.10.0/File/Copy.pm
.
Merci beaucoup. Nan. Je demande à propos de la vérification de la valeur de retour de toute commande en Perl. si je fais une commande FILE: MOVE ou toute autre commande, comment puis-je vérifier l'état de la sortie si elle a réussi? Dans le script shell UNIX, nous pouvons vérifier $ ?. En Perl est le statut de sortie 0 dénote le succès comme dans le script shell. J'ai vu le site wikipedia. utilisez Hello :: World; Est-ce que le mot mondial est nécessaire ici. Le mot "Hello" devrait aussi avoir le même nom que le nom du fichier. Normalement, dans le paquet java, nous avons le nom du répertoire dans le nom du paquet. require_order doit être défini dans GET_OPTIONS COMMAND? – Arav
- 1. Questions de base LaTeX
- 2. Perl Getopt Configurer les questions
- 3. questions de comparaison Float en Perl
- 4. questions de base de preg_match
- 5. Rails - CanCan - Questions de base
- 6. Plusieurs questions C de base
- 7. questions de base sur SharePoint
- 8. Quelques questions Azure de base
- 9. 1 javascript/numéro CSS2 perl cgi Questions
- 10. Questions de base de données de débutant
- 11. Questions de base de conception de base de données
- 12. Elmah questions de configuration de base/problèmes
- 13. questions de normalisation FFT de base
- 14. Questions de base sur l'utilisation de Keystore
- 15. Questions de certificat SSL de base
- 16. questions serveur de base de l'équipe de base
- 17. Quelques questions de base sur 'delayed_job'
- 18. Questions sur les routes Rails3 de base?
- 19. C# ASP.net questions base de données MVC
- 20. Questions SQL de base ... Left Join
- 21. Away3d et les événements (questions de base)
- 22. OLE Principes de base de l'automatisation avec Perl
- 23. Questions de sécurité du site Web
- 24. des questions Cygwin Interop
- 25. Perl: question de base sur la hashmap
- 26. Perl: question de base, fonctionnalité fonctionnelle
- 27. purge base de données postgres utilisant perl
- 28. Fournisseur de contenu dans les questions de base Android
- 29. Structuration de base de questions et réponses dans RoR
- 30. des questions de base de données dans SQL
Arav, la quasi-totalité de ces cinq questions ne sont pas liées entre elles. À l'avenir, il serait préférable de [poser une question séparée] (http://stackoverflow.com/questions/ask) pour chaque sujet. – daxim