Hi Andrew >From your code I have completed the code and it is working fine. I am pasting here the final code.
#!/usr/bin/perl use strict; use warnings; 1 #!/usr/bin/perl 2 3 use strict; 4 use warnings; 5 6 my $Input_File_Name = "inputdir/MAT4BE_SC_STD_INFO"; 7 open my $RFH,'<',$Input_File_Name; 8 while(<$RFH>) { 9 next if $_ =~ /^\s*$/; 10 my $line = $_; 11 if ( $line =~ m/^\s+\d+/ ) { 12 $line =~ s/^\s+//; 13 $line =~ s/\s+$//; 14 #next unless $line; 15 my $dev = substr($line, 10, 15); 16 my $dev1 = substr($line, 15, 20); 17 $dev =~ s/\s*//g; 18 $dev1 =~ s/\s*//g; 19 unless ($dev) { 20 $line =~ s/(..........)(.....)/$1NULL/; 21 } 22 23 unless ($dev1) { 24 $line =~ s/(...............)(.....)/$1NULL/; 25 } 26 print $line."\n"; 27 28 #} 29 } 30 } 31 close($RFH); My Request to you can you please explain from line number 19-25. Specially the pattern matching sections and also the significance of unless and why u have used unless not any other. Best Regards Anirban. On Thu, Apr 2, 2015 at 9:15 PM, Andrew Solomon <and...@geekuni.com> wrote: > Or more politely... :) > > https://gist.github.com/anonymous/2ebb0441bcdec4a94e48 > > > > On Thu, Apr 2, 2015 at 4:43 PM, Andrew Solomon <and...@geekuni.com> wrote: > >> Hi Anirban >> >> I haven't completely solved the problem - only addressing the DEV field, >> but I hope this points you in the right direction! >> >> cheers >> >> Andrew >> >> #!/usr/bin/env perl >> >> use strict; >> >> use warnings; >> >> >> >> # NOTE This assumes the space aren't tabs and the columns are aligned >> >> >> my $input = ' >> >> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >> >> 1 0 31 1 >> >> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >> >> 2 0 31 1 >> >> '; >> >> >> my @input_lines = split /\n/, $input; >> >> >> >> foreach my $line (@input_lines) { >> >> next unless $line; >> >> my $dev = substr($line, 10, 15); >> >> $dev =~ s/\s*//g; >> >> unless ($dev) { >> >> $line =~ s/(..........)(.....)/$1UNDEF/; >> >> } >> >> print $line."\n"; >> >> >> } >> >> On Thu, Apr 2, 2015 at 3:43 PM, Anirban Adhikary < >> anirban.adhik...@gmail.com> wrote: >> >>> Hi List >>> >>> I would like to process a file which has the following structure. >>> >>> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >>> 1 0 31 1 >>> >>> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >>> 2 0 31 1 >>> >>> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >>> 3 0 31 1 >>> >>> SCGR SC DEV DEV1 NUMDEV DCP STATE REASON >>> 4 0 31 1 >>> >>> Condition is if any field is empty (In this case DEV and DEV1) those >>> has to be replaced by the keyword "NULL". When I am trying to split the >>> line based on whitespace >>> @elements = split(/\s+/,$line); >>> in $element[2] entire blank space is coming upto NUMDEV1. so while >>> printing I am not getting the proper output. >>> >>> How to resolve this problem? >>> >>> Best Regards >>> Anirban. >>> >> >> >> >> -- >> Andrew Solomon >> >> Mentor@Geekuni http://geekuni.com/ >> http://www.linkedin.com/in/asolomon >> > > > > -- > Andrew Solomon > > Mentor@Geekuni http://geekuni.com/ > http://www.linkedin.com/in/asolomon >