#!/usr/bin/perl -w use strict; # muestra el contenido de una cadena como bytes decimales y hexadecimales, y como caracteres sub DumpString { my @a = unpack('C*',$_[0]); my $o = 0; while (@a) { my @b = splice @a,0,16; my @d = map sprintf("%03d",$_), @b; my @x = map sprintf("%02x",$_), @b; my $c = substr($_[0],$o,16); $c =~ s/[[:^print:]]/ /g; printf "%6d %s\n",$o,join(' ',@d); print " "x8,join(' ',@x),"\n"; print " "x9,join(' ',split(//,$c)),"\n"; $o += 16; } } # efectuamos la solicitud my $t = time; my $emp_id = 217641; my $item = "boxes of paperclips"; my $quan = 2; my $urgent = 1; my $rec = pack( "l i a32 s2", $t, $emp_id, $item, $quan, $urgent); DumpString($rec); # procesamos la solicitud my ($order_time, $monk, $itemname, $quantity, $ignore) = unpack( "l i a32 s2", $rec ); print "Order time: ",scalar localtime($order_time),"\n"; print "Placed by monk #$monk for $quantity $itemname\n"; # formatos de cadena $rec = pack('a8',"hello"); # deberķa producir 'hello\0\0\0' DumpString($rec); $rec = pack('Z8',"hello"); # deberķa producir 'hello\0\0\0' DumpString($rec); $rec = pack('A8',"hello"); # deberķa producir 'hello ' DumpString($rec); ($rec) = unpack('a8',"hello\0\0\0"); # deberķa producir 'hello\0\0\0' DumpString($rec); ($rec) = unpack('Z8',"hello\0\0\0"); # deberķa producir 'hello' DumpString($rec); ($rec) = unpack('A8',"hello "); # deberķa producir 'hello' DumpString($rec); ($rec) = unpack('A8',"hello\0\0\0"); # deberķa producir 'hello' DumpString($rec); # formatos de bits $rec = pack('b8',"00100110"); # deberķa producir 0x64 (100) DumpString($rec); $rec = pack('B8',"00100110"); # deberķa producir 0x26 (38) DumpString($rec); # formatos en hexadecimal $rec = pack('h4',"1234"); # deberķa producir 0x21,0x43 DumpString($rec); $rec = pack('H4',"1234"); # deberķa producir 0x12,0x34 DumpString($rec);