my $addr = mapFile( ); substr( $addr, 32, 4 ) = pack 'V', 1+ unpack( 'V', substr $addr, 32, 4 ); #### $s = '0123456789';; ++substr( $s, $_, 1) for 0 .. length $s;; print $s;; 12345678911 #### $s = '999999999';; ++substr( $s, $_, 1) for 0 .. length $s;; print $s;; 11111111119999 #### $s = chr(0) x 40;; vec( $s, $_, 32 ) = $_ for 0 .. 9;; print unpack 'N*', $s;; 0 1 2 3 4 5 6 7 8 9 $s = pack 'N*', 0 .. 9;; print vec( $s, $_, 32 ) for 0 .. 9;; 0 1 2 3 4 5 6 7 8 9 { no warnings 'portable'; print vec( $s, $_, 64 ) for 0 .. 5 };; 1 8589934595 17179869189 25769803783 34359738377 0 #### ++u32at( $_ ) for $start .. $end; u64at( int rand 2**37 ) *= 3 for 1 .. 1e6; #### my $totalX = u64ref( $headerSize + 3 * 8 ); ... $totalNet = $subTotalA + $subTotalB - $subTotalC; #### $$totalNet = $$subTotalA + $$subTotalB - $$subTotalC; #### #! perl -slw use strict; use warnings; use Inline C => <<'__EOI__'; SV* f(SV* sv, I32 pos, I32 len) { SV* targ = newSV_type(SVt_PVLV); sv_magic(targ, NULL, PERL_MAGIC_substr, NULL, 0); LvTYPE(targ) = 'x'; LvTARG(targ) = SvREFCNT_inc_simple(sv); LvTARGOFF(targ) = pos; LvTARGLEN(targ) = len; return targ; } __EOI__ use Devel::Peek qw( Dump ); sub f :lvalue; my $x = "abcde"; my $r = ++f($x,2,1); Dump $r; print $x; __END__ C:\test>ike2-lv.pl SV = PVNV(0x3da9db8) at 0x277920 REFCNT = 1 FLAGS = (PADMY,POK,pPOK) IV = 0 NV = 0 PV = 0x3f044c8 "d"\0 CUR = 1 LEN = 8 abdde