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

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.

Replies are listed 'Best First'.
Re^5: Ignore given character from file
by Athanasius (Archbishop) on Jan 13, 2016 at 12:24 UTC

    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

Re^5: Ignore given character from file
by hippo (Archbishop) on Jan 13, 2016 at 12:24 UTC
    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