in reply to left shift problem

raq84dec:  it is not working since scalar can hold 32 bit

Thats not exactly true in perl. A scalar is a "scalar type" where the width is bound by the adress range, so it might have a lot of bits ;-)

As bart (Re: left shift problem) already mentioned, just pack two 32bit values together by the pack function:

... my ($x, $y) = (122, 233); my $r = pack "L2", $y, $x; # pack two DWORDS print $r; # will print nothing useful print "\n", join "\n", unpack "L*", $r; # will print dwords print "\n", join "\n", unpack "C*", $r; # will print bytes ...
Choose pack template modifiers which give you the
correct width and the correct byte order for your
specific problem, on Win32, the V and L should do fine

Regards
mwa