no save
Assistance
Achat
News

Forum | Linux/Unix
[Vi]
lami20j, le lun. 20 mars 2006 à 21:01:24
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.
Précédent[Dal]
mars 06
lami20j
mars 06
Suivant
REPONSES
vi4ever
mars 06
Mathieu
mars 06
[Dal]
mars 06
[Dal]
mars 06
Mathieu
mars 06
jipicy
mars 06
[Dal]
mars 06
lami20j
mars 06
lami20j
mars 06
[Dal]
mars 06
Version Web
Réalisé par RedShift
no save