Bloc-note 'Perl'
Le 17 novembre 2007, à 17:55 par Ulhume...

Bloc-Notes dédié à perl

UTF-8

Forcer l'UTF-8 sur un scalaire :

  1. if (! utf8::is_utf8($message)) {
  2.   utf8::decode($message);
  3. }

Créer un fichier en UTF8

open FILE, ">:utf8", $filename;

Ecrire dans la console en UTF8

binmode STDOUT, ":utf8";

Référence d'un scalaire

\$scalar

Type d'une variable

ref($var)

Trimming

  1. #!/usr/bin/perl
  2.  
  3. # Declare the subroutines
  4. sub trim($);
  5. sub ltrim($);
  6. sub rtrim($);
  7.  
  8. # Create a test string
  9. my $string = "  \t  Hello world!   ";
  10.  
  11. # Here is how to output the trimmed text "Hello world!"
  12. print trim($string)."\n";
  13. print ltrim($string)."\n";
  14. print rtrim($string)."\n";
  15.  
  16. # Perl trim function to remove whitespace from the start and end of the string
  17. sub trim($)
  18. {
  19.   my $string = shift;
  20.   $string =~ s/^\s+//;
  21.   $string =~ s/\s+$//;
  22.   return $string;
  23. }
  24. # Left trim function to remove leading whitespace
  25. sub ltrim($)
  26. {
  27.   my $string = shift;
  28.   $string =~ s/^\s+//;
  29.   return $string;
  30. }
  31. # Right trim function to remove trailing whitespace
  32. sub rtrim($)
  33. {
  34.   my $string = shift;
  35.   $string =~ s/\s+$//;
  36.   return $string;
  37. }

Méthode AUTOLOAD

  1. {
  2.    package Test;
  3.  
  4.    use vars qw($AUTOLOAD);
  5.  
  6.   sub new  {
  7.     ...
  8.   }
  9.   sub AUTOLOAD {
  10.     my $self = shift;
  11.     my $name = $AUTOLOAD;
  12.  
  13.     $name =~ s/.*:://;
  14.  
  15.     if (@_) {
  16.         $self->{$name} = shift;
  17.     }
  18.  
  19.     return $self->{$name};
  20.   }
  21. }
  22. my $test=new Test;
  23. $test->toto(12); # Créé automatiquement par l'autload
  24. print $test->toto;

Exportation de constantes

  1. package MesConstantes;
  2. require 5.6.0;
  3.  
  4. use strict;
  5. use warnings;
  6.  
  7. use constant C1 => 1;
  8. use constant C2 => "coucou";
  9.  
  10. our(@ISA, @EXPORT);
  11.  
  12. @ISA    = qw(Exporter);
  13. @EXPORT = qw(C1 C2);
  14.  
  15. 1;

Et à l'extérieur, utilisation des constantes :

  1. use MesConstantes;
  2. print C1."\n";
  3. print C2."\n";

La ligne @ISA = qw(Exporter) définit un héritage (au sens objet) de la classe Exporter vers la classe constante. Donc si l'on joue à cela dans un objet qui hérite d'une autre classe on a un héritage multiple. Pour éviter les conflits avec SUPER, placer le "véritable" héritage en tête de liste qw(MonHeritage Exporter).

Chargement dynamique d'un module

  1. my @modules=("Module1","Module2");
  2. my @instances={};
  3. for (@modules) {
  4.     eval "require $_";
  5.     $instances[scalar(@instances)]=$_->new;
  6. }

Flush stdout

  1.  use IO::Handle qw( );
  2.  
  3. ....
  4.             print "\r\e[K";
  5.             STDOUT->flush();
  6.             print "message";
  7.             STDOUT->flush();

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Sommaire
Commentaires récents