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

Change your regex to include those four characters:

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

Replies are listed 'Best First'.
Re^4: Ignore given character from file
by N0obieMonk (Novice) on Jan 13, 2016 at 12:07 UTC

    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,

        you mean something like this?

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

        and thank you for the nice explanations :D

      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