#!/usr/bin/perl use strict; use warnings; sub dec2bin { my $bits = shift; my $size = shift; my $template = shift; my $str = unpack("B$size", pack($template, $bits)); return $str; } sub bin2dec { my $bits = shift; my $size = shift; my $template = shift; my $substr = substr("0" x $size . $bits , -$size); print "Substring: ".$substr."\n"; my $pack = pack("B$size", $substr); print "Pack: ".$pack."\n"; my $unpack = unpack($template, $pack); return $unpack; } my $int2bin = dec2bin( 3 , 8 , "i" ); print "Int2bin: ".$int2bin."\n"; my $binary2int = bin2dec( $int2bin , 8 , "i" ); print "Decimal from binary: ".$binary2int."\n"; __END__ Int2bin: 00000011 Substring: 00000011 Pack:  Use of uninitialized value $binary2int in concatenation (.) or string at test.pl line 32. Decimal from binary: