# Q6 Perl Assignment Hash of Hashes
# Jeffrey Borgard
# List of Bestselling Books using a Hash of Hashes
# Information about the five books selected from Question 4
# array:
@books = ( "15th Affair" , "Me Before You" , "The Rainbow Comes and Goes" , "Alexander Hamilton" , "A Court of Mist
and Fury" ) ;
# and the following Hash of Hashes:
%bestsellers = ( "15th Affair" => { Author => "James Patterson" ,
bookcategory => "Hardcover Fiction" ,
cover => "Hard" ,
price => "$16.80" ,
} ,
"Me Before You" => { Author => "Jojo Moyes" ,
bookcategory => "Trade Paperback
Fiction" ,
cover => "Paperback" ,
price => "$6.47" ,
} ,
"The Rainbow Comes and Goes" => { Author => "Gloria Vanderbilt & Anderson
Cooper" ,
bookcategory => "Hardcover NonFiction" ,
cover => "Hard" ,
price => "$6.47" ,
} ,
"Alexander Hamilton" => { Author => "Ron Chernow" ,
bookcategory => "Hardcover NonFiction" ,
cover => "Paperback" ,
price => "$11.90" ,
} ,
"A Court of Mist and Fury" => { Author => "Sarah J.Maas" ,
bookcategory => "Young Adult" ,
cover => "Hard" ,
price => "$11.64" ,
} ,
) ;
# To print out best seller books information in the Hash of Hashes (ascending order):
print ( "\n \n Best selling books - sorted by books:\n \n " ) ;
printf ( "%-20s \t %-6s \t %-10s \t %-25s \t %-10 \n " , "Books" , "Author" , "bookcategory" , "cover" , "price" ) ;
@sortedKeys = sort ( @books ) ;
for $bookname ( @sortedKeys ) {
$author = $bestsellers { $bookname } { Author} ;
$bookcategory = $bestsellers { $bookname } { bookcategory} ;
$cover = $bestsellers { $bookname } { cover} ;
$price = $bestsellers { $bookname } { price} ;
printf ( "%-20s \t %-6i \t %-10s \t %-25s \t %-10s \n " , $bookname , $author , $bookcategory , $cover , $price ) ; }
# To print out sorted Book information in the Hash of Hashes (descending order):
print ( "\n \B est selling books - Book Name decending:\n \n " ) ;
printf ( "%-20s \t %-6s \t %-10s \t %-25s \t %-10s \n " , "Books" , "Author" , "Bookcategory" , "Cover" , "Price" ) ;
@reverseKeys = reverse ( @sortedKeys ) ;
for $bookname ( @reverseKeys ) {
$author = $bestsellers { $bookname } { Author} ;
$bookcategory = $bestsellers { $bookname } { bookcategory} ;
$cover = $bestsellers { $bookname } { cover} ;
$price = $bestsellers { $bookname } { price} ;
printf ( "%-20s \t %-6i \t %-10s \t %-25s \t %-10s \n " , $bookname , $author , $bookcategory , $cover , $price ) ; }
IyBRNiBQZXJsIEFzc2lnbm1lbnQgSGFzaCBvZiBIYXNoZXMKIyBKZWZmcmV5IEJvcmdhcmQKIyBMaXN0IG9mIEJlc3RzZWxsaW5nIEJvb2tzIHVzaW5nIGEgSGFzaCBvZiBIYXNoZXMKIyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgZml2ZSBib29rcyBzZWxlY3RlZCBmcm9tIFF1ZXN0aW9uIDQKCgojIGFycmF5OgpAYm9va3MgPSAoIjE1dGggQWZmYWlyIiwgIk1lIEJlZm9yZSBZb3UiLCAiVGhlIFJhaW5ib3cgQ29tZXMgYW5kIEdvZXMiLCAiQWxleGFuZGVyIEhhbWlsdG9uIiwgIkEgQ291cnQgb2YgTWlzdCAKCmFuZCBGdXJ5Iik7CgojIGFuZCB0aGUgZm9sbG93aW5nIEhhc2ggb2YgSGFzaGVzOgoKJWJlc3RzZWxsZXJzID0gKCAiMTV0aCBBZmZhaXIiID0+IHsgQXV0aG9yID0+ICJKYW1lcyBQYXR0ZXJzb24iLCAKCQkJCQkJCQkJYm9va2NhdGVnb3J5ID0+ICJIYXJkY292ZXIgRmljdGlvbiIsCgkJCQkJCQkJCWNvdmVyID0+ICJIYXJkIiwKCQkJCQkJCQkJcHJpY2UgPT4gIiQxNi44MCIsCgkJCQkJCQkJfSwKCQkJCSJNZSBCZWZvcmUgWW91IiA9PiB7IEF1dGhvciA9PiAiSm9qbyBNb3llcyIsIAoJCQkJCQkJCQlib29rY2F0ZWdvcnkgPT4gIlRyYWRlIFBhcGVyYmFjayAKCkZpY3Rpb24iLAoJCQkJCQkJCQljb3ZlciA9PiAiUGFwZXJiYWNrIiwKCQkJCQkJCQkJcHJpY2UgPT4gIiQ2LjQ3IiwKCQkJCQkJCQl9LAoJCQkJIlRoZSBSYWluYm93IENvbWVzIGFuZCBHb2VzIiA9PiB7IEF1dGhvciA9PiAiR2xvcmlhIFZhbmRlcmJpbHQgJiBBbmRlcnNvbiAKCkNvb3BlciIsIAoJCQkJCQkJCQlib29rY2F0ZWdvcnkgPT4gIkhhcmRjb3ZlciBOb25GaWN0aW9uIiwgCgkJCQkJCQkJCWNvdmVyID0+ICJIYXJkIiwKCQkJCQkJCQkJcHJpY2UgPT4gIiQ2LjQ3IiwKCQkJCQkJCQl9LAoJCQkJIkFsZXhhbmRlciBIYW1pbHRvbiIgPT4geyBBdXRob3IgPT4gIlJvbiBDaGVybm93IiwgCgkJCQkJCQkJCWJvb2tjYXRlZ29yeSA9PiAiSGFyZGNvdmVyIE5vbkZpY3Rpb24iLAoJCQkJCQkJCQljb3ZlciA9PiAiUGFwZXJiYWNrIiwKCQkJCQkJCQkJcHJpY2UgPT4gIiQxMS45MCIsCgkJCQkJCQkJfSwKCQkJCSJBIENvdXJ0IG9mIE1pc3QgYW5kIEZ1cnkiID0+IHsgQXV0aG9yID0+ICJTYXJhaCBKLk1hYXMiLCAKCQkJCQkJCQkJYm9va2NhdGVnb3J5ID0+ICJZb3VuZyBBZHVsdCIsIAoJCQkJCQkJCQljb3ZlciA9PiAiSGFyZCIsIAoJCQkJCQkJCQlwcmljZSA9PiAiJDExLjY0IiwKCQkJCQkJCQl9LAopOwoKIyBUbyBwcmludCBvdXQgYmVzdCBzZWxsZXIgYm9va3MgaW5mb3JtYXRpb24gaW4gdGhlIEhhc2ggb2YgSGFzaGVzIChhc2NlbmRpbmcgb3JkZXIpOgoKcHJpbnQgKCJcblxuQmVzdCBzZWxsaW5nIGJvb2tzIC0gc29ydGVkIGJ5IGJvb2tzOlxuXG4iKTsKCnByaW50ZigiJS0yMHMgXHQlLTZzIFx0JS0xMHMgXHQlLTI1cyBcdCUtMTAgXG4iLCAiQm9va3MiLCAiQXV0aG9yIiwiYm9va2NhdGVnb3J5IiwgImNvdmVyIiwicHJpY2UiKTsKCkBzb3J0ZWRLZXlzID0gc29ydCAoQGJvb2tzKTsKCmZvciAkYm9va25hbWUgKEBzb3J0ZWRLZXlzKSB7CiAgICAkYXV0aG9yID0gJGJlc3RzZWxsZXJzeyRib29rbmFtZX17QXV0aG9yfTsKICAgICRib29rY2F0ZWdvcnkgPSAkYmVzdHNlbGxlcnN7JGJvb2tuYW1lfXtib29rY2F0ZWdvcnl9OwogICAgJGNvdmVyID0gJGJlc3RzZWxsZXJzeyRib29rbmFtZX17Y292ZXJ9OwogICAgJHByaWNlID0gJGJlc3RzZWxsZXJzeyRib29rbmFtZX17cHJpY2V9OwoKICAgIHByaW50ZigiJS0yMHMgXHQlLTZpIFx0JS0xMHMgXHQlLTI1cyBcdCUtMTBzIFxuIiwgJGJvb2tuYW1lLCAkYXV0aG9yLCAkYm9va2NhdGVnb3J5LCAkY292ZXIsJHByaWNlKTsKCXByaW50ICJcbiI7Cn0KCiMgVG8gcHJpbnQgb3V0IHNvcnRlZCBCb29rIGluZm9ybWF0aW9uIGluIHRoZSBIYXNoIG9mIEhhc2hlcyAoZGVzY2VuZGluZyBvcmRlcik6CgpwcmludCAoIlxuXEJlc3Qgc2VsbGluZyBib29rcyAtIEJvb2sgTmFtZSBkZWNlbmRpbmc6XG5cbiIpOwoKcHJpbnRmKCIlLTIwcyBcdCUtNnMgXHQlLTEwcyBcdCUtMjVzIFx0JS0xMHMgXG4iLCAiQm9va3MiLCAiQXV0aG9yIiwgIkJvb2tjYXRlZ29yeSIsICJDb3ZlciIsICJQcmljZSIpOwoKQHJldmVyc2VLZXlzID0gcmV2ZXJzZSAoQHNvcnRlZEtleXMpOwoKZm9yICRib29rbmFtZSAoQHJldmVyc2VLZXlzKSB7CiRhdXRob3IgPSAkYmVzdHNlbGxlcnN7JGJvb2tuYW1lfXtBdXRob3J9OwokYm9va2NhdGVnb3J5ID0gJGJlc3RzZWxsZXJzeyRib29rbmFtZX17Ym9va2NhdGVnb3J5fTsKJGNvdmVyID0gJGJlc3RzZWxsZXJzeyRib29rbmFtZX17Y292ZXJ9OwokcHJpY2UgPSAkYmVzdHNlbGxlcnN7JGJvb2tuYW1lfXtwcmljZX07CgpwcmludGYoIiUtMjBzIFx0JS02aSBcdCUtMTBzIFx0JS0yNXMgXHQlLTEwcyBcbiIsICRib29rbmFtZSwgJGF1dGhvciwgJGJvb2tjYXRlZ29yeSwgJGNvdmVyLCRwcmljZSk7CnByaW50ICJcbiI7Cn0K