wrml has asked for the wisdom of the Perl Monks concerning the following question:
here is the code
I know I'm losing something because I ran a file to count the lines in each and the original is one character longer. that is, all the lines are 7387 long in the original and 1386 in the new... doing a simple 'length($TheLine)'. what have I done?#!/usr/bin/perl -w @infile = ('/mnt/ide0/home/wrml/ReturnA/KCRETA60.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA61.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA62.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA63.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA64.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA65.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA66.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA67.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA68.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA69.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA70.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA71.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA72.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA73.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA74.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA75.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA76.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA77.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA78.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA79.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA80.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA81.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA82.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA83.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA84.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA85.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA86.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA87.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA88.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA89.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA98.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA99.DAT', '/mnt/ide0/home/wrml/ReturnA/KCRETA00.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN90.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN91.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN92.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN93.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN94.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN95.DAT', '/mnt/ide0/home/wrml/ReturnA/KEN96.DAT', ); $outpath = '/mnt/ide0/home/wrml/FormatReturnA/'; use File::Basename 'basename'; %substitute = ( '0000I' => '00000', '0000J' => '-0001', '0000K' => '-0002', '0000L' => '-0003', '0000M' => '-0004', '0000N' => '-0005', '0000O' => '-0006', '0000P' => '-0007', '0000Q' => '-0008', '0000R' => '-0009', '0001I' => '-0010', '0001J' => '-0011', '0001K' => '-0012', '0001L' => '-0013' ); $alt = join '|', keys(%substitute); $regex = qr/($alt)/; open (COUNT, '>', '/mnt/ide0/home/wrml/ReturnA/Counter.txt'); foreach $file (@infile){ open(IN, '<', "$file") or warn $! and next; open(OUT, '>', $outpath.basename($file)) or warn $! and next; while (<IN>) { $Line = $_; $DataLine = substr($Line, 279); $DataLine =~ s/$regex/$substitute{$1}/g; $FirstLine = substr($Line, 0, 279); substr($FirstLine, -1, 1) = $DataLine; print OUT $FirstLine; $length = length($FirstLine); if ($length != 7383) { print COUNT "you have a problem in file $file. The lin +e is $length\n" } } }
please help.
Janitored by Arunbear - replaced pre tags with code tags, to prevent distortion of site layout and allow code extraction.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Lost Column
by Zaxo (Archbishop) on Aug 18, 2005 at 19:13 UTC | |
|
Re: Lost Column
by japhy (Canon) on Aug 18, 2005 at 19:19 UTC | |
by wrml (Novice) on Aug 18, 2005 at 21:33 UTC | |
by AReed (Pilgrim) on Aug 18, 2005 at 22:36 UTC | |
by wrml (Novice) on Aug 19, 2005 at 17:42 UTC | |
by wrml (Novice) on Aug 19, 2005 at 18:45 UTC |