- Perl Basics
- Perl - Home
- Perl - Introduction
- Perl - Environment
- Perl - Syntax Overview
- Perl - Data Types
- Perl - Variables
- Perl - Scalars
- Perl - Arrays
- Perl - Hashes
- Perl - IF...ELSE
- Perl - Loops
- Perl - Operators
- Perl - Date & Time
- Perl - Subroutines
- Perl - References
- Perl - Formats
- Perl - File I/O
- Perl - Directories
- Perl - Error Handling
- Perl - Special Variables
- Perl - Coding Standard
- Perl - Regular Expressions
- Perl - Sending Email
- Perl Advanced
- Perl - Socket Programming
- Perl - Object Oriented
- Perl - Database Access
- Perl - CGI Programming
- Perl - Packages & Modules
- Perl - Process Management
- Perl - Embedded Documentation
- Perl - Functions References
- Perl Useful Resources
- Perl - Questions and Answers
- Perl - Quick Guide
- Perl - Useful Resources
- Perl - Discussion
Perl pack Function
Description
This function evaluates the expressions in LIST and packs them into a binary structure specified by EXPR. The format is specified using the characters shown in Table below −
Each character may be optionally followed by a number, which specifies a repeat count for the type of value being packed.that is nibbles, chars, or even bits, according to the format. A value of * repeats for as many values remain in LIST. Values can be unpacked with the unpack function.
For example, a5 indicates that five letters are expected. b32 indicates that 32 bits are expected. h8 indicates that 8 nybbles ( or 4 bytes) are expected. P10 indicates that the structure is 10 bytes long.
Syntax
Following is the simple syntax for this function −
pack EXPR, LIST
Return Value
This function returns a packed version of the data in LIST using TEMPLATE to determine how it is coded.
Here is the table which gives values to be used in TEMPLATE.
Sr.No. | Character & Description |
---|---|
1 | a ASCII character string padded with null characters |
2 | A ASCII character string padded with spaces |
3 | b String of bits, lowest first |
4 | B String of bits, highest first |
5 | c A signed character (range usually -128 to 127) |
6 | C An unsigned character (usually 8 bits) |
7 | d A double-precision floating-point number |
8 | f A single-precision floating-point number |
9 | h Hexadecimal string, lowest digit first |
10 | H Hexadecimal string, highest digit first |
11 | i A signed integer |
12 | I An unsigned integer |
13 | l A signed long integer |
14 | L An unsigned long integer |
15 | n A short integer in network order |
16 | N A long integer in network order |
17 | p A pointer to a string |
18 | s A signed short integer |
19 | S An unsigned short integer |
20 | u Convert to uuencode format |
21 | v A short integer in VAX (little-endian) order |
22 | V A long integer in VAX order |
23 | x A null byte |
24 | X Indicates "go back one byte" |
25 | @ Fill with nulls (ASCII 0) |
Example
Following is the example code showing its basic usage −
#!/usr/bin/perl -w $bits = pack("c", 65); # prints A, which is ASCII 65. print "bits are $bits\n"; $bits = pack( "x" ); # $bits is now a null chracter. print "bits are $bits\n"; $bits = pack( "sai", 255, "T", 30 ); # creates a seven charcter string on most computers' print "bits are $bits\n"; @array = unpack( "sai", "$bits" ); #Array now contains three elements: 255, T and 30. print "Array $array[0]\n"; print "Array $array[1]\n"; print "Array $array[2]\n";
When above code is executed, it produces the following result −
bits are A bits are bits are �T Array 255 Array T Array 30