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 ); }