Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: header footer

by kcott (Archbishop)
on Mar 04, 2014 at 22:13 UTC ( [id://1076984]=note: print w/replies, xml ) Need Help??


in reply to header footer

G'day gupr1980,

Welcome to the monastery.

Your substitution regex has little bearing on the task you describe. You might want to get up to speed on Perl's regular expresions by reading "perlrequick - Perl regular expressions quick start" and "perlretut - Perl regular expressions tutorial".

Having said that, I see no reason to use regular expressions here: substr is quite capable of doing this (and I'd expect it to be a lot faster).

Here's an example script, pm_1076973.pl, with much short header and footer lengths for demo purposes:

#!/usr/bin/env perl use strict; use warnings; $^I = '.bak'; my $head_len = 5; my $foot_len = 3; while (<>) { chomp; print substr($_, $head_len, length($_) - $head_len - $foot_len), " +\n"; }

Here's the starting files (before that script is run):

$ ls -l pm_1076973.* -rwxr-xr-x 1 ken staff 210 5 Mar 08:50 pm_1076973.pl -rw-r--r-- 1 ken staff 87 5 Mar 08:46 pm_1076973.txt
$ cat pm_1076973.txt 12345... content ...123 12345... more content ...123 12345... even more content ...123

Now run the script:

$ pm_1076973.pl pm_1076973.txt

Now the files look like this:

$ ls -l pm_1076973.* -rwxr-xr-x 1 ken staff 202 5 Mar 08:56 pm_1076973.pl -rw-r--r-- 1 ken staff 63 5 Mar 08:56 pm_1076973.txt -rw-r--r-- 1 ken staff 87 5 Mar 08:46 pm_1076973.txt.bak
$ cat pm_1076973.txt ... content ... ... more content ... ... even more content ...
$ cat pm_1076973.txt.bak 12345... content ...123 12345... more content ...123 12345... even more content ...123

-- Ken

Replies are listed 'Best First'.
Re^2: header footer
by gupr1980 (Acolyte) on Mar 04, 2014 at 22:27 UTC
    Does your code assume there is just one header and footer in the file? If not, i am not seeing how it will go from one header/footer segment to another. And thanks for the reading links. It definitely helps.
      "Does your code assume there is just one header and footer in the file?"

      No it does not. Furthermore, given I put in a fair amount of effort to show the exact input and output, I'm surprised you're asking.

      "If not, i am not seeing how it will go from one header/footer segment to another."

      That sounds like you didn't even try it. Did you just have a quick look and decided it wouldn't work?

      Changing the lengths from my demo 5 and 3 to your real application requirements of 50 and 30, your sample records (posted below):

      HDR.S287878877.DDDDD.DDDDDDXXXXXXXXXXXXXXXXXXXXXXX1STR HYTRES NAME PLA +CE DEST GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGG +GGGGGGGGGGGGGG1111111111111111111112222222222222222222222222222333333 +333333333333333333333444444444444444444444444444444444455 55555555555 +55555555555555555566666666666666777777777777FTRDDDDDDDDDDFFFFFFFFFFFF +FFFFF HDR.S287878877.DDDDD.DDDDDDXXXXXXXXXXXXXXXXXXXXXXX1STR HYTRES NAME PLA +CE DEST GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG GGGGGG +GGGGGGGGGGGGGG1111111111111111111112222222222222222222222222222333333 +333333333333333333333444444444444444444444444444444444455 55555555555 +55555555555555555566666666666666777777777777FTRDDDDDDDDDDFFFFFFFFFFFF +FFFFF

      become

      1STR HYTRES NAME PLACE DEST GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +GGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGG111111111111111111111222222222222222 +222222222222233333333333333333333333333344444444444444444444444444444 +4444455 5555555555555555555555555555566666666666666777777777777 1STR HYTRES NAME PLACE DEST GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +GGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGG111111111111111111111222222222222222 +222222222222233333333333333333333333333344444444444444444444444444444 +4444455 5555555555555555555555555555566666666666666777777777777

      -- Ken

        You are right. I didnt give it a try. It just looked like it did. I will test it. Thanks for your time.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1076984]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2024-03-29 14:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found