my $packed; my $n =1000000-1; my $offset = $n*4; my $success = shmread($id, $packed, $offset, 4) #### use warnings; use strict; use IPC::SysV qw(IPC_PRIVATE IPC_RMID S_IRUSR S_IWUSR); open(my $idx, "<", "$ARGV[0].idx") || die "cannot open data file\n $!"; my $idx_size = (split(' ',`wc -c $ARGV[0].idx`))[0]; my $idx_id = shmget(IPC_PRIVATE , $idx_size, S_IRUSR | S_IWUSR) || die "shmfet $!"; my $offset = 0; foreach my $i (0..$idx_size/1000000) { my $n=""; read($idx,$n,1000000); shmwrite($idx_id, $n, $offset, 1000000) || die "shmwrite: $!"; $offset +=1000000; } shmctl($idx_id, IPC_RMID, 0) || die "shmctl: $!"; close $idx; exit; #### $ ipcs -m #### ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 8454205 valerio 600 4294967296 0 #### $ perl -V:archname archname='x86_64-linux-gnu-thread-multi';