Formats are the writing templates used in
Perl to output the reports. Perl has a mechanism which helps in generating simple reports and charts. Instead of executing, Formats are declared, so they may occur at any point in the program. Formats have their own namespace apart from the other types in Perl i.e. function named "tron" is not same as format named "tron". However, name of the filehandle in the program is the default name for the format associated with that filehandle.
Defining a Format
Syntax to define a Perl Format:
format FormatName =
fieldline
value_1, value_2, value_3
fieldline
value_1, value_2, value_3
.
- Name of the format is denoted by the
FormatName.
-
Fieldline is a particular way used to format the data. Fieldline can also hold text or
fieldholders.
-
Value lines denotes/describes the values which will be entered into the
fieldlines.
- Format is ended by a
single period (.)
-
Fieldholders have the space for the data which will be entered later.
Syntax for Fieldholders:
@<<<<<<< left-justified (with 7 field spaces by counting '@' and '<')
@||||||| center-justified
@###.#### numeric fieldholder
@* multiline fieldholder
Using a Format
Write
keyword is used to call on the format declaration.
Write FormatName;
Format name is the name of an open file handle and the write statement sends the output to the same file handle. In order to send the data to
STDOUT, format name needs to be associated with the STDOUT file handle.
Note: Use the
select()
function for making sure that STDOUT is the selected file handle.
select (STDOUT);
In order to associate format name with STDOUT by setting the new format name with STDOUT, use the variables like
$~ or
$Format_Name
$~ = "Format_Name";
Note: For writing report in any other file handle apart from the STDOUT, use the
select()
function to select that file handle.
Example:
Input: Using STDOUT.
Perl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
format DATA =
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
$First_Name[$k] $Last_Name[$k] $ID[$k] $Phone_Number[$k]
.
select(STDOUT);
$~ = DATA;
$k = 0;
while ($k <= $#First_Name)
{
write;
$k++;
}
Output :
Input: Using other file handle(Printing the output into a text file.)
Perl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
format DATA =
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<
$First_Name[$k] $Last_Name[$k] $ID[$k] $Phone_Number[$k]
.
open(FILE, ">file.txt");
select FILE;
$~ = DATA;
$k = 0;
while ($k <= $#First_Name)
{
write;
$k++;
}
close FILE;
Output :
File where data is printed:
Report Header and Footer
Header is something that appears at the top of each page. Instead of defining a template, just define a header and assign it to
$^ or
$FORMAT_NAME_TOP.
Footer has a fixed size. It can be achieved by checking for variable
$-. You can even print the footer by yourself if necessary using the syntax given below,
format FORMAT_NAME_BOTTOM
End of Page $%
Example:
Input: Using STDOUT
Perl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
format DATA_TOP =
@||||||||||||||||||||||||||||||||||||||||||||||||||||
"Staff Members"
----------------------
First Last ID Phone
------------------------------------------------------
.
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
format DATA =
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
$First_Name[$k] $Last_Name[$k] $ID[$k] $Phone_Number[$k]
.
select (STDOUT);
$~ = DATA;
$^ = DATA_TOP;
$k = 0;
while ($k <= $#First_Name)
{
write;
$k++;
}
Output:
Input: Getting output into a text file.
Perl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
format DATA_TOP =
@||||||||||||||||||||||||||||||||||||||||||||||||||||
"Staff Members"
----------------------
First Last ID Phone
------------------------------------------------------
.
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
format DATA =
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<
$First_Name[$k] $Last_Name[$k] $ID[$k] $Phone_Number[$k]
.
open (FILE, ">file.txt");
select FILE;
$~ = DATA;
$^ = DATA_TOP;
$k = 0;
while ($k <= $#First_Name)
{
write;
$k++;
}
close FILE;
Output:
File where data is printed:
Pagination
Pagination comes into the picture when you have a long report which will not fit in a single page. Use of variables like
$% or
$FORMAT_PAGE_NUMBER along with the header in the format helps in defining the page number to more than one page. Default number of lines in a page is 60 but it can be set manually too by using the variables
$= or
$FORMAT_LINES_PER_PAGE.
Example:
Perl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
format DATA_TOP =
@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
"[Page $%]"
@||||||||||||||||||||||||||||||||||||||||||||||||||||
"Staff Members"
----------------------
First Last ID Phone
------------------------------------------------------
.
@First_Name = qw(Karthik Raman Shivam Tarun);
@Last_Name = qw(Singh Biswas Anand Mishra);
@ID = qw(101 186 009 359);
@Phone_Number = qw(963x 885x 734x 921x);
format DATA =
@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<
$First_Name[$k] $Last_Name[$k] $ID[$k] $Phone_Number[$k]
.
select (STDOUT);
$~ = DATA;
$^ = DATA_TOP;
$= = 1;
$k = 0;
while ($k <= $#First_Name)
{
write;
$k++;
}
Output:
Similar Reads
Coercions in Perl
In Perl, there are values of different types like strings, integers, rational numbers, and more. Coercion is responsible for converting one data type of data or object to another, behind the scenes where we magically just get what we want. It generally refers to "implicit type conversion" which is a
4 min read
Barewords in Perl
Like any other language, Perl is also error-prone. some of the features in Perl are very difficult to use correctly. Perl's parser understands Perl's operators, functions, methods with the help of some symbols. But this is not the case always. The parser has to do the guesswork when we use Barewords
3 min read
Perl | Hash Operations
Prerequisite: Perl Hashes, Perl Hash As most readers likely know, the hash stores data by using a mechanism called Hashing. In hashing, a key is used to determine a value or data. These keys must be unique and are then used as the index at which the data associated with the key is stored. This data
8 min read
Perl | Arrays
In Perl, array is a special type of variable. The array is used to store the list of values and each object of the list is termed as an element. Elements can either be a number, string, or any type of scalar data including another variable. Example: @number = (50, 70, 46); @names = ("Geeks", "For",
6 min read
Perl | abs() function
This function returns the absolute value of its argument. If a pure integer value is passed then it will return it as it is, but if a string is passed then it will return zero. If VALUE is omitted then it uses $_ Syntax: abs(VALUE) Parameter: VALUE: It is a required number which can be either positi
2 min read
Perl | cos() Function
This function is used to calculate cosine of a VALUE or $_ if VALUE is omitted. The VALUE should be expressed in radians. Syntax: cos(VALUE) Parameters: VALUE in the form of radians Returns: Function returns cosine of VALUE. Example 1: Perl #!/usr/bin/perl # Calling cos function $var = cos(5); # Pri
1 min read
Perl | int() function
int() function in Perl returns the integer part of given value. It returns $_ if no value provided. Note that $_ is default input which is 0 in this case. The int() function does not do rounding. For rounding up a value to an integer, sprintf is used. Syntax: int(VAR) Parameters: VAR: value which is
1 min read
Perl | Anchors in Regex
Anchors in Perl Regex do not match any character at all. Instead, they match a particular position as before, after, or between the characters. These are used to check not the string but its positional boundaries. Following are the respective anchors in Perl Regex: '^' '$', '\b', '\A', '\Z', '\z', '
5 min read
Perl | join() Function
join() function in Perl combines the elements of LIST into a single string using the value of VAR to separate each element. It is effectively the opposite of split. Note that VAR is only placed between pairs of elements in the LIST; it will not be placed either before the first element or after the
1 min read
Perl | y Operator
The y operator in Perl translates all characters of SearchList into the corresponding characters of ReplacementList. Here the SearchList is the given input characters which are to be converted into the corresponding characters given in the ReplacementList. Syntax: y/SearchList/ReplacementList/ Retur
2 min read