in reply to 2GB limit to vecs
Until a better version of vec is available, you might try something like this:
sub myvec(\$$$) :lvalue { use constant TWO_GB => 2**31; my( $ref, $offset, $bits ) = @_; if( $offset > TWO_GB - 1 ) { $offset -= TWO_GB; $ref = \substr $$ref, ( TWO_GB * $bits ) / 8; } CORE::vec( $$ref, $offset, $bits ); }
Which should be reasonably efficient as it avoids copying the huge string. If you wanted to get fancy in anticipation of the fixed version, you could stick it in a module and export it as CORE::GLOBAL::vec.
The above is untested at the transition limit as I don't have enough memory to create strings that big. You might want to look closely at that TWO_GB - 1...
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: 2GB limit to vecs
by bop (Acolyte) on Jun 24, 2008 at 01:34 UTC | |
by BrowserUk (Patriarch) on Jun 24, 2008 at 02:25 UTC | |
by bop (Acolyte) on Jul 03, 2008 at 13:15 UTC |