in reply to Re: Ignore given character from file
in thread Ignore given character from file

ok you are right it was easy,but may I ask another question? if you have

my $sentence = 'The quick brown fox jumped over the lazy dog'; my $substring = 'quick.*?fox'; $sentence =~ s{$substring}{big bad wolf};

you get an output of 'The big bad wolf jumped over the lazy dog',but how can I tell him to ignore even "The" from the sentence but not by using :

my $sentence = 'The quick brown fox jumped over the lazy dog'; my $substring = 'The.*?fox'; $sentence =~ s{$substring}{big bad wolf};

but by telling him to ignore 4 characters before "quick"

Replies are listed 'Best First'.
Re^3: Ignore given character from file
by hippo (Archbishop) on Jan 13, 2016 at 11:56 UTC

    Change your regex to include those four characters:

    my $substring = '....quick.*?fox';

      last 2 questions, if you have something like

      use warnings 'all'; use strict; use autodie; open my $input, '<', $ARGV[0]; while (my $sentence = <$input>) { my $substring = '...pck.*?.c'; $sentence =~ s{$substring}{}; open my $out, '>', 'hex.txt'; print $out unpack 'H*', $sentence; }

      in your file you have something like file:123/pck/asd/cara.casddma , it will read the value from "1" to "ara.casddma" even tho I used ".c" not "c" , from your last explanation I know now that it will read 1 char before c but I must ask how can you tell it to read until ".c" not "c" and second I would like to replace the text in the file with blank not with a space.

        Hello N0obieMonk, and welcome to the Monastery!

        (1) In a regex, a dot matches any character other than a newline (unless your regex has an /s modifier, in which case . matches a newline too). If you want to match the literal substring “.c”, you need to escape the dot: \.c

        (2) How is a “blank” different from a space?

        But my main purpose in replying is to point out a logic error in the code snippet shown. open my $out, '>', 'hex.txt'; will re-open and truncate the output file on each iteration of the while loop, and you’ll end up with file “hex.txt” containing only a single entry from the last loop iteration. You need to open the output file for writing before the while loop, so that the filehandle $out is initialized only once.

        Update: Added “the literal substring” to point (1).

        Hope that helps,

        Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

        from your last explanation I know now that it will read 1 char before c but I must ask how can you tell it to read until ".c" not "c"

        See perlrebackslash

        I would like to replace the text in the file with blank not with a space.

        See chomp