Richard Bruno
navigation
Home
admin









Perl
October 18th, 2016

Voir également h?doc=Modules_Perl

Table des matières


Encodage / décodage
Installation sur Debian
"Cannot unzip, no unzip program available"
Comparaison de dates
Fichiers codés en UTF-8
Tableaux passés en paramètre

Encodage / décodage



Vérifier l'encodage

use Encode::Detect::Detector;

$encoding_name = Encode::Detect::Detector::detect($string);
print " string : ".$string."\ n";
if (defined $encoding_name)
{
print "encodage : ".$encoding_name."\n";
}




Décodage (passage en UTF-8 si c'est le codage par défaut de perl)

$string = decode($encoding_name, $string);



Afficher le codage d'un caractère (ici le 5ème)

printf("%X\n", ord(substr($enomusage, 4, 1 ) ) ) ;



On peut ensuite utiliser ce code dans des expressions régulières :

$enomusage =~ s/\x{2019}/ /g;



Note : une table des caractères : http://www.20doigts.fr/utf-8-extended-table.html

Installation sur Debian


apt-get install libmodule-install-perl
cpan
install
install < nom du module>




"Cannot unzip, no unzip program available"




>cpan
>o conf unzip /usr/bin/unzip
>o conf commit



http://sylvain.lhullier.org/publications/intro_perl/

1/ $toto : scalaire

2/ @toto : tableau
- indice du dernier élément d'un tableau @t : variable $#t (les indices commencent à 0)
- scalar(@t) = nombre d'élément du tableau my $x = @t
- accès à un élément particulier = §t[1]

3/ %toto : table de hachage
- accès à un élément particulier = $toto{1}
- keys(%toto) : obtenir une liste des clefs
- values(%toto) : obtenir une liste des valeurs
- suppression : delete

4/ expressions régulières
- match : if( $v =~ m/toto/ )
si $v contient toto
- remplace : $v =~ s/toto/titi/;
remplace la première occurrence de toto dans la variable $v par titi

5/ pointeur :
- my $refv = $v;
- récupérer la valeur : $$refv

- " " => interprétation du contenu
' ' => pas d'interprétation du contenu

Comparaison de dates



#!/usr/bin/perl
use strict;use warnings;
use Date::Manip;
#use Date::Calc qw(Delta_Days);
use Date::Calc qw(Delta_DHMS);


my $date1 = "Oct 3 9:50:32 2011";

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$mon = $mon+1;
$year = 1900 + $year;
my $date2 = "$mon $mday $hour:$min:$sec $year";
print "date2 : $date2\n";

my $d1 = ParseDate($date1);
my $d2 = ParseDate($date2);

my @d1 = UnixDate($d1,"%Y","%m","%d","%H","%M","%S");
print "@d1\n";

my @d2 = UnixDate($d2,"%Y","%m","%d","%H","%M","%S");
print "@d2\n";

my @diff = Delta_DHMS(@d1,@d2);

print "Diff : $diff[0] jours, $diff[1]:$diff[2]:$diff[3]\n";




Fichiers codés en UTF-8


Lecture :

open FH, "<:utf8", "fichier";


Ecriture :

open FH, ">:utf8", "fichier";


Source : http://perl.enstimac.fr/DocFr/perluniintro.html

Tableaux passés en paramètre



Pour passer un tableau en paramètre à une fonction, on peut passer une référence à ce tableau. Exemple :


my @liste = ();

$liste[0]="toto";
print "liste 0 : $liste[0]\n";

ma_fonction(\@liste);


foreach my $value ( @liste ) {
print "test : $value\n";
}

sub ma_fonction
{
($refliste) = @_;
print "ma_fonction liste 0 : @{$refliste}[0]\n";
@{$refliste}[0]="tutu";
@{$refliste}[1]="titi";
}



Ce qui donne une fois exécuté :

liste 0 : toto
ma_fonction liste 0 : toto
test : tutu
test : titi





Dernières modifs
Systemd (October 24th, 2020)
TP - rsyslogd (June 20th, 2017)
Gestion de la memoire (June 20th, 2017)
Ansible (November 10th, 2016)
Fichiers et systèmes de fichiers (November 8th, 2016)
X (October 20th, 2016)
Obtenir des informations sur le système (October 19th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno