Euh, tu es sur que ton code perl fonctionne encore si tu as des \n dans ton binaire?
En plus, à lire ton expression régulière, ça peut pas marcher du tout
/([^ \n]+) ([^ \n]+)/ ça va matcher sur texte composé de deux caractères séparés par du blanc, mais certainement pas le binaire voulu (ou il y a pas de blancs, etc).
Un petit test pour s'en convaincre:
Code :
#!/usr/bin/perl use warnings; use strict; my $v = join '', (0x01,0x02,0x03,0x04 ); $v =~ s/ ([^ \n ]+ ) ([^ \n ]+ )/$ 2 $ 1/g;
|
En sortie, on a la même chose qu'en entrée, rien n'a été swappé des 4 octets successifs de valeur 1 2 3 et 4.
A la limite, tu aurais écrit s/(.)(.)/$2$1/g, ça aurait pu fonctionner (a la coupure de fin de ligne pour une ligne de longueur impaire près).
Il y a des techniques en perl pour faire ce type de conversion, mais elles reposent plutôt sur pack/unpack, et une lecture qui ne se fait pas ligne à ligne (contrairement à ce que fait ici le my $v = <STDIN> )
A+,
---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻