Bonsoir à tous,
Si j'ai bien compris : Après chaque 4 , 5 et 1 caractère on doit mettre une tabulation.
En ce cas je propose cette solution :
#! /usr/bin/perl
use warnings;
use strict;
while (<DATA>){
my $l = length;
print join "\t",unpack("A4A5A1" x ($l/10),$_),
substr($_,-($l-(int($l/10))*10)),"\n";
}
__END__
1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Y3,9999,77A0
1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Yaaa
2,0522,01Z2,0522,01Z2,0522,01Z2,0522,01Z2,0522,0
Resultat
[lamitest@localhost corbeille]$ perl ccm_vi.pl
1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y 3,99 99,77 A 0
1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y 1,05 22,01 Y aaa
2,05 22,01 Z 2,05 22,01 Z 2,05 22,01 Z 2,05 22,01 Z 2,05 22,01 Z
[lamitest@localhost corbe
Resultat pour Dal
[lamitest@localhost corbeille]$ perl ccm_dal_vi.pl
1,05 22,01 Y 1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Y3,9999,77A0
1,05 22,01 Y 1,0522,01Y1,0522,01Y1,0522,01Y1,0522,01Yaaa
2,05 22,01 Z 2,0522,01Z2,0522,01Z2,0522,01Z2,0522,01Z
[lamitest@localhost corbei
En fait j'ai separe par 4,5 et 1 et ensuite j'afiche ce qui reste de chaine (disons qu'on a 63 caractères). Donc j'affiche 4+5+1 6 fois plus les 3 dernières.