Rob Dixon schreef:
> my $binary = unpack 'b*', join '', map chr hex, @hex;
>
> But this is a beginners' group :)
No problem if you explain some of the details:
(*1*) my @temp1 = map chr hex, @hex;
This achieves about the same:
my @temp1;
foreach my $elm (@hex)
{
push @temp1, chr( hex( $elm ) );
}
or more compact:
my @temp1; push @temp1, chr(hex($_)) for @hex;
or even more compact:
my @temp1; push @temp1, chr hex for @hex;
It creates and fills an array (intermediate in the original expression,
named @temp1 here for clarity), in which each element is a single
character (not necessarily limited to \x00-\xFF).
See `perldoc -f hex` and `perldoc -f chr` (and of course `perldoc -f
map`).
Test-1:
perl -wle "@data=qw(78 FF 7A); print chr(hex($_)) for @data"
(Windows)
perl -wle "@data=qw(78 FF 7A); print chr(hex(\$_)) for @data" (*ix)
perl -wle '@data=qw(78 FF 7A); print chr(hex($_)) for @data' (*ix)
perl -wle "@data=qw(78 FF 7A); print chr hex for @data" (both)
(*2*) my $temp2 = join '', @step1
This just concatenates all ellements of @step1 (which are all a single
character) into a string.
Test-2:
perl -wle "print join q//, (1, q/ZX/, 2)"
(I wrote the '' as q//, to make this work in most shells.)
(*3*) my $binary = unpack 'b*', $temp2 ;
This creates a binary representation of the string of characters, see
`perldoc -f pack` for details about the 'b' conversion.
Test-3:
perl -wle "print unpack q/b8/, chr(0x51)"
--
Affijn, Ruud
"Gewoon is een tijger."
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>