The code presented here demonstrates how flexible these datatypes can be, such as having arrays that contain numbers as well as words, and the fact that array sizes can change dynamically. It also shows how the format of array output can be modified in a print statement using one of the special forms, "$,".
The output of the perl script shown in red italics has been interspersed between the Perl code in order to make it easier to follow what is happening in the program. The full program as well as the observed output are available as links at the bottom of the page.
#!/usr/bin/perl # The first line of the script envokes Perl # Use "/usr/bin/perl -w" option for debugging # Scalar variables $var1 = "Hello World"; $var2 = 14.6; # Array variables @arr1 = (0,1,2,3,4); @arr2 = ("zero","one","two","three","four"); # Hash variable, or associative array %hash1 = ("one","Monday","two", "Tuesday","three", "Wednesday","four","Thursday"); # Some simple printing examples print $var1; # Printing out Scalar Variables print (" ",$var2,"\n");Hello World 14.6
print (@arr1,"\n"); # Print out the arrays print (@arr2,"\n\n");01234
@arr3 = @arr1; # Create a third array and copy everything print (@arr3,"\n"); print "\n";01234
print ($arr1[0], "\n"); # Print specific srray elements (scalar values) print ($arr2[3], "\n"); print "\n";0
print (%hash1,"\n"); # Printing out the full hash arraythreeWednesdaytwoTuesdayoneMondayfourThursday
$key = "two"; print ($hash1{$key}, "\n\n"); # Print out an element in the hash arrayTuesday
# Here's where things get kewl... $arr2[1] = $arr1[1]; # Working with different data types $, = " "; # Kewlness: Changing the separator between array elements print (@arr1,"\n"); print (@arr2,"\n\n");0 1 2 3 4
$, = ": "; # Change the separator again print (@arr1,"\n");0: 1: 2: 3: 4:
print (@arr2,"\n\n");zero: 1: two: three: four:
print (%hash1,"\n\n");three: Wednesday: two: Tuesday: one: Monday: four: Thursday:
$arr1[4] = $var1; # Add on at the end of the array print (@arr1,"\n");0: 1: 2: 3: Hello World:
$arr2[7] = $var2; # Go beyond the array print (@arr2,"\n\n");zero: 1: two: three: four: : : 14.6:
@arr1[3..5]=@arr2[2..4]; # Copy portions of one array to another $, = " -> "; # Change separator again print (@arr1,"\n");0 -> 1 -> 2 -> two -> three -> four ->
print (@arr2,"\n\n");zero -> 1 -> two -> three -> four -> -> -> 14.6 ->
# Dealing with Hashing print (keys %hash1, "\n"); #Print out the keys of the hashthree -> two -> one -> four ->
foreach $key ( keys %hash1) # Cycle through all key {print $hash1{$key}; } print "\n\n";WednesdayTuesdayMondayThursday
$, = ":"; print @arr1; # Print array 1, just for reference0:1:2:two:three:four:
for ($i=0; $i<7; $i++) # Loop through all elements in array 1 { print ($hash1{$arr1[$i]}, "\n"); #Print Hash value if it exists }: