Toute tes chaînes sont en utf8. Il est donc logique que utf8::valid renvoie 1 dans tous les cas.
Ce que tu veux tester, si j'ai bien compris, c'est si ces chaînes sont représentables dans l'encoding de la console de ta machine.
Code :
#!/usr/bin/perl use strict; use warnings; use autodie; use utf8; open my $file, "<", "data8.txt"; while (<$file> ) { $_ = decode("utf8", $_); print if (utf8:: downgrade($_, 1)); }
|
Ça donne en sortie:
TST0015108239|A Certain Point Of View Teaser 1
TST0015112182|RNS 2009 - Soma Salegy 1
TST0015113611|Otto act3
TST0015113892|Clip - Morgan Priest : The future
TST0015114112|Clip - Morgan Priest : L'action a un nouveau visage
TST0015114974|Style and Tecknik (SNT) - Breakdance
TST0015116679|PAC MAN (REMI GAILLARD)
TST0015120331|WakeBox Aquaboulevard de Paris
TST0015120553|Tuto application iPhone iPod remote
TST0015121223|Hello Geekette - Teaser Saison 1
TST0015122260|Miniature Replica Soldier - F.E.A.R. 2 |
decode("utf8", $_) va mettre tes données dans la représentation interne de Perl (normalement en utf8 aussi, vu le use utf8, mais ça marchait pas directement, même en forçant la lecture du fichier en utf8, je ne sais pas trop pourquoi, donc je force le décodage après une lecture en mode caractère), et utf8::downgrade($_, 1) va rendre faux si la dégradation en donnée dans l'encoding de la machine (cp850 sur ma machine) est avec pertes, donc si la chaîne initiale n'est pas directement utilisable.
A+,
Message édité par gilou le 17-04-2018 à 00:14:11
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --