Question : La valeur fixe de lecture/écriture placent le Perl des dossiers n

Bonjour,
I AM essayant de lire un dossier qui a 6 deux points. Les données apparaîtront à exactement aux positions du same
colon. J'ai essayé de lire vers le haut sur la recherche et de dire mais n'ai pas trouvé qu'un bon explaination.
Johanne1

here est 3 lignes d'entrée file.
743 Hafslund Telekom Nettjene 02011 20090616130000 20100208152959 communications asa 02011 de carotte d'I
704 20100208153000 99991231000000 I
729 TDC COMME - 729 02090 20080609083000 99991231000000 deux points premiers d'I

The sont les espaces vides et peuvent être pris out.
There sont 6 deux points mais s'inquiètent seulement des 5 premiers deux points, c.-à-d. de derniers deux points peuvent être pris le rendement d'out.
Desired ont 2 conditions ; le
1. séparent les deux points par un certain genre de deux points 5 de l'exemple semi-colon.
2. de délimiteur est une date s'il commence par 9999 remplacent alors par rien si la date ne fait pas le start
with 9999 alors ne remplacent pas it.

desired produit :

743 ; Hafslund Telekom Nettjene ; 02011 ; 20090616130000 ; 20100208152959 ;
704 ; Communications asa de carotte ; 02011 ; 20100208153000 ; ;
729 ; TDC EN TANT QUE -729 ; 02090 ; 20080609083000 ; ; le


I a écrit un manuscrit au déchiffrement entre les mots et les lettres et les espaces mais il fait le not
work en raison des deux points 2 qui sont un nom qui peut inclure le manuscrit de number.
The ci-dessous donne la bonne réponse pour les 2 premières lignes mais la ligne 3 est ouput fendu d'incorrectly.

incorrect pour la ligne 3 :
729 ; TDC COMME - ; 729 ; 02090 ; 20080609083000 ; ; le

The en second lieu 729 est ot de partie que le name.

It a été suggéré à moi à à position fixe utilisé puisque chaque partie des données semblera toujours l'in
the le même colon.
Start comptant de 0.
example : les deux points 1 commencent dans les 7èmes débuts des deux points 2 du position
dans les 12èmes débuts des deux points 3 du position
dans les trente-sixième débuts des deux points 4 du position
dans les quarante-huitième débuts des deux points 5 du position
dans le soixante-septième position.

Is là n'importe quelle manière que je peux facilement stocker le contenu de chaque colonn using les deux points position.

Here est mon manuscrit basé sur les espaces, les décimales et les mots mais ne fonctionneront jamais en raison du
colon 2 contient un titre qui a des mots et pourrait avoir un number.

$infile = « input.txt » ;
$outfile = « output.txt » ;
open (OUTF, « >$outfile ») || mourir « ne peut pas ouvrir $outfile » ;
open (FNI, « <$infile ») || mourir « ne peut pas ouvrir $infile » ;
{
du
while () $tmp = $_ ; chomp du
($tmp) ;
$tmp=~ s/^ \ s+//; le @arr du
= s'est dédoublé (/\ s+/, $tmp) ;
$temp = "" ;
pour ($i = 0 ; <= $#arr de $i ;
{
de $i++) si (/de =~ de $arr [$i] \ d+/) {
si (&& d'eq de $i ($#arr - (1)) ($arr [$i] =~/^9999/))   {$temp = $temp.  » \ ; « ;}

autrement {$temp = $temp.$arr [$i].  » \ ; « ;}
{
d'elsif du
du
} ("" de Ne de $arr [$i+1]) si (/de =~ de $arr [$i+1] \ d+/) {$temp = $temp.$arr [$i].  » \ ; « ;}
d'autre {$temp = $temp.$arr [$i]. » « ;}copie OUTF « $temp \ n » du
du
du
}} ;
close (FNI) du
} ;
close (OUTF) ; le

Thanks à l'avance pour votre pièce rusée d'advice.




the est les deuxièmes deux points qui sont un nom qui peut avoir des lettres et numérote l'and
have plusieurs le words
class= de

Réponse : La valeur fixe de lecture/écriture placent le Perl des dossiers n

Vous pouvez employer la division à un niveau de char et l'épissure pour faire le tour… Juste se rappeler que les éléments épissés de la rangée sont enlevés ainsi décaler votre « indicateur » en conséquence. Test.txt ressemble à ceci dans mon cas :
pat1 modèle pattern2
dfadafda du pappape xxd1
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
10 :
11 :
12 :
13 :
14 :
15 :
16 :
17 :
18 :
19 :
20 :
# ! /bin/perl
#
employer strict ;
employer les avertissements ;


ouvrir IH, « ;
clôturer IH ;

foreach mon $line (@data) {
 mon @spl = s'est dédoublé (/, $line) ;
 mon @col1 = @spl d'épissure, 0.4 ; #positions 2-9 ;
 mon @col2 = @spl d'épissure, 1.7 ; #positions 2-9 ;
  
 copie @col1 ; 
 « d'impression \ n » ;
 copie @col2 ; 
 « d'impression \ n » ;
}
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us