#!/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 () { $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 line is $length\n" } } }