Thanks to visit codestin.com
Credit goes to perldoc.perl.org

You are viewing the version of this documentation from Perl 5.005. View the latest version
unpack TEMPLATE,EXPR

Unpack() does the reverse of pack(): it takes a string representing a structure and expands it out into a list value, returning the array value. (In scalar context, it returns merely the first value produced.) The TEMPLATE has the same format as in the pack() function. Here's a subroutine that does substring:

    sub substr {
	my($what,$where,$howmuch) = @_;
	unpack("x$where a$howmuch", $what);
    }

and then there's

sub ordinal { unpack("c",$_[0]); } # same as ord()

In addition, you may prefix a field with a %<number> to indicate that you want a <number>-bit checksum of the items instead of the items themselves. Default is a 16-bit checksum. For example, the following computes the same number as the System V sum program:

    while (<>) {
	$checksum += unpack("%16C*", $_);
    }
    $checksum %= 65536;

The following efficiently counts the number of set bits in a bit vector:

$setbits = unpack("%32b*", $selectmask);