Hi,
I am trying to solve an object initialisation problem:
suppose this is my object constructor:
sub new {
my ($pkg) = $_[0];
my $this = bless { data => $_[1], }, $pkg;
return $this;
}
The non-trivial argument (
$_[1], a scalar) passed to the
constructor can be a VERY large buffer, and I want
to store it into the object. I have the following constraints:
- there must NEVER be, at any time, two copies of
this buffer (because it is very memory-expensive)
- $this->{data} must have scalar semantics,
i.e. I don't want to save a reference
- The piece of code invoking the constructor must
not be able to access the buffer through the
actual argument after the invocation
Ideally, the best solution should be an operator like
swap $a, $b, exchanging the underlying
data objects "pointed to" by the two scalars $a and $b. In this way I could initialise
$this->{data} to, say, a null string, and
then exchange its value with that of $_[1].
I was able to find the module Data::Swap on CPAN, which
does exactly this, but I would like to know if this can
be done natively in Perl.
Thanks to everybody in advance,
Stefano.
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.