Defining a module with accessor and mutator (get_* and set_*) functions has already been discussed. Another approach is to define iterators to access data. Happily, a file handle is already an iterator (or more accurately, is structured to be used by an iterator like readline). You can define functions in your module to interact with, in this case, a file handle and yet keep it absolutely private. A very simple example:

File use_Getfile_1.pl:

use warnings; use strict; use Getfile; print qq{printing from file }, Getfile->FILENAME, qq{\n}; print Getfile->content; # in list context Getfile->reset; # start again print scalar Getfile->content; print scalar Getfile->content;

File Getfile.pm:

# Getfile.pm package Getfile; use 5.008; use warnings; use strict; use constant FILENAME => 'qwerty.txt'; open my $fh, '<', FILENAME or die qq{opening }, FILENAME, qq{: $!}; sub content { return <$fh>; } sub reset { seek $fh, 0, 0 or die qq{seeking }, FILENAME, qq{: $!}; } 1;

File qwerty.txt:

line 1: The rain in Spain line 2: falls mainly on the plain. line 3: The quick brown fox jumps over line 4: the lazy dog. line 5: How now, brown cow?

Output:

c:\@Work\Perl\monks>perl use_Getfile_1.pl printing from file qwerty.txt line 1: The rain in Spain line 2: falls mainly on the plain. line 3: The quick brown fox jumps over line 4: the lazy dog. line 5: How now, brown cow? line 1: The rain in Spain line 2: falls mainly on the plain.

In reply to Re: How we can link/access the variables of different module in main script without defining variable as global.. ?? by AnomalousMonk
in thread How we can link/access the variables of different module in main script without defining variable as global.. ?? by pinkeshprajapati

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.