It would be nice if you could have formatted your text with code-tags ... then it would be easier to identify line 18.

Nevertheless there are some issues in your code:

if ("$file" =~ "$filename")
What do you want to acchieve with this code? It makes much more sense to use eq insted of =~ ... or change the order ("is the entered filename part of the real filename?")
open (FH, "$file") || die "cant open file $!";
It would have helped you to display also the filename you couldn't open. Then you would have seen that it does not contain the path. Assuming you want to open the file with the real filename (and not the filename the user entered), your could change your code to
$filename = $dir."/".$filename; open (FH, "$filename") || die "cant open file <$filename> $!";
(note: the separator between directory and filename might be different in your operating system)

Now you can attack the issue with your search&replace ... there is an odd number of quotation marks (") inside your substitution, which should make you very suspicious ;-) And think again why you use grep AND s///.

HTH, Rata

In reply to Re: reading file in directory by Ratazong
in thread reading file in directory by kansal611

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.