{"product_id":"beginning-perl-paperback-softback-9781118013847","title":"Beginning Perl (Paperback \/ softback) 9781118013847","description":"\u003cfont face=\"Georgia\"\u003e\r\n\u003cp\u003e\u003cfont size=\"6\"\u003eBeginning Perl\u003c\/font\u003e\u003cbr\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003c\/p\u003e\n\u003cp\u003e\u003cfont size=\"4\"\u003eCurtis Poe (Author)\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e9781118013847, Wiley\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003ePaperback \/ softback, published 14 September 2012\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e752 pages\u003cbr\u003e23.6 x 18.8 x 3.6 cm, 1.238 kg\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\r\n\r\n\r\n\u003cp align=\"justify\"\u003e\u003cstrong\u003e\u003cfont size=\"3\"\u003e\u003cb\u003eEverything beginners need to start programming with Perl\u003c\/b\u003e  \u003cp\u003ePerl is the ever-popular, flexible, open source programming language that has been called the programmers’ Swiss army knife. This book introduces Perl to both new programmers and experienced ones who are looking to learn a new language. In the tradition of the popular Wrox Beginning guides, it presents step-by-step guidance in getting started, a host of try-it-out exercises, real-world examples, and everything necessary for a Perl novice to start programming with confidence.\u003c\/p\u003e \u003cul\u003e \u003cli\u003eIntroduces Perl to both new programmers and experienced ones who want to learn a new language\u003c\/li\u003e \u003cli\u003eProvides a host of real-world applications for today's environments so readers can get started immediately\u003c\/li\u003e \u003cli\u003eCovers the new features of Perl but fully applicable to previous editions\u003c\/li\u003e \u003c\/ul\u003e \u003cp\u003e\u003ci\u003eBeginning Perl\u003c\/i\u003e provides the information and instruction you need to confidently get started with Perl.\u003c\/p\u003e \u003cp\u003e\u003cb\u003eFor Instructors:\u003c\/b\u003e Classroom and training support material are available for this book.\u003c\/p\u003e\u003c\/font\u003e\u003c\/strong\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003e\u003cp\u003eIntroduction xxiii\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1: What is Perl? 1\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePerl Today 2\u003c\/p\u003e \u003cp\u003eGetting Perl 3\u003c\/p\u003e \u003cp\u003eWorking with Non-Windows Platforms: perlbrew 4\u003c\/p\u003e \u003cp\u003eUsing Windows 6\u003c\/p\u003e \u003cp\u003eThe Perl Community 8\u003c\/p\u003e \u003cp\u003eIRC 8\u003c\/p\u003e \u003cp\u003ePerlMonks 9\u003c\/p\u003e \u003cp\u003ePerl Mongers 9\u003c\/p\u003e \u003cp\u003eStackOverflow 9\u003c\/p\u003e \u003cp\u003eUsing perldoc 11\u003c\/p\u003e \u003cp\u003eUnderstanding the Structure of perldoc 11\u003c\/p\u003e \u003cp\u003eGetting Started with perldoc 11\u003c\/p\u003e \u003cp\u003eUsing Tutorials and FAQs 12\u003c\/p\u003e \u003cp\u003eUsing the perldoc -f function 14\u003c\/p\u003e \u003cp\u003eUsing a Terminal Window 14\u003c\/p\u003e \u003cp\u003eUsing the Command Line 15\u003c\/p\u003e \u003cp\u003eCreating a Work Directory 16\u003c\/p\u003e \u003cp\u003eCreating Hello, World! 18\u003c\/p\u003e \u003cp\u003eWriting Your First Program 18\u003c\/p\u003e \u003cp\u003eShebang Lines 21\u003c\/p\u003e \u003cp\u003eSummary 22\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2: Understanding the CPAN 25\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCPAN and METACPAN 26\u003c\/p\u003e \u003cp\u003eFinding and Evaluating Modules 27\u003c\/p\u003e \u003cp\u003eDownloading and Installing 29\u003c\/p\u003e \u003cp\u003eCPAN Clients 33\u003c\/p\u003e \u003cp\u003eUsing the CPAN.pm Client 33\u003c\/p\u003e \u003cp\u003eUsing the Cpanm Client 35\u003c\/p\u003e \u003cp\u003ePPM 36\u003c\/p\u003e \u003cp\u003eCPAN::Mini 36\u003c\/p\u003e \u003cp\u003eSummary 39\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3: Variables 41\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat is Programming? 42\u003c\/p\u003e \u003cp\u003eA Few Things to Note Before Getting Started 43\u003c\/p\u003e \u003cp\u003estrict, warnings, and diagnostics 43\u003c\/p\u003e \u003cp\u003eThe my Function 43\u003c\/p\u003e \u003cp\u003eSigils 44\u003c\/p\u003e \u003cp\u003eIdentifiers 45\u003c\/p\u003e \u003cp\u003eScalars 46\u003c\/p\u003e \u003cp\u003eStrings 47\u003c\/p\u003e \u003cp\u003eNumbers 51\u003c\/p\u003e \u003cp\u003eArrays 53\u003c\/p\u003e \u003cp\u003eBreaking Down the Code 54\u003c\/p\u003e \u003cp\u003eAccessing Elements 55\u003c\/p\u003e \u003cp\u003eIterating over Arrays 58\u003c\/p\u003e \u003cp\u003eHashes 58\u003c\/p\u003e \u003cp\u003eAccessing Elements 59\u003c\/p\u003e \u003cp\u003eIterating Over Hashes 60\u003c\/p\u003e \u003cp\u003eAdding Data to Hashes 60\u003c\/p\u003e \u003cp\u003eSlices 61\u003c\/p\u003e \u003cp\u003eArray Slices 62\u003c\/p\u003e \u003cp\u003eHash Slices 62\u003c\/p\u003e \u003cp\u003eContext 63\u003c\/p\u003e \u003cp\u003eScalar Context 63\u003c\/p\u003e \u003cp\u003eList Context 64\u003c\/p\u003e \u003cp\u003eScope 67\u003c\/p\u003e \u003cp\u003emy Variables 67\u003c\/p\u003e \u003cp\u003ePackage Variables 69\u003c\/p\u003e \u003cp\u003eStrict, Warnings, and Diagnostics 72\u003c\/p\u003e \u003cp\u003estrict 74\u003c\/p\u003e \u003cp\u003ewarnings 74\u003c\/p\u003e \u003cp\u003ediagnostics 75\u003c\/p\u003e \u003cp\u003eWorking Without a Net 76\u003c\/p\u003e \u003cp\u003ePerl’s Built-in Variables 78\u003c\/p\u003e \u003cp\u003e$_ 78\u003c\/p\u003e \u003cp\u003e%ENV 79\u003c\/p\u003e \u003cp\u003e@ARGV 79\u003c\/p\u003e \u003cp\u003eOther Special Variables 80\u003c\/p\u003e \u003cp\u003eSummary 81\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4: Working With Data 83\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing Scalars 84\u003c\/p\u003e \u003cp\u003eWorking with Strings 85\u003c\/p\u003e \u003cp\u003eUsing String Operators 94\u003c\/p\u003e \u003cp\u003eScalar::Util 97\u003c\/p\u003e \u003cp\u003eNumeric Builtins 98\u003c\/p\u003e \u003cp\u003eBitwise Operators 103\u003c\/p\u003e \u003cp\u003eUnderstanding Booleans 103\u003c\/p\u003e \u003cp\u003eAssignment Operators 108\u003c\/p\u003e \u003cp\u003ePrecedence and Associativity 109\u003c\/p\u003e \u003cp\u003eArray and List Functions 111\u003c\/p\u003e \u003cp\u003eBuilt-in Array Functions 111\u003c\/p\u003e \u003cp\u003eList::Util 116\u003c\/p\u003e \u003cp\u003eBuilt-in Hash Functions 116\u003c\/p\u003e \u003cp\u003edelete() 116\u003c\/p\u003e \u003cp\u003eexists() 117\u003c\/p\u003e \u003cp\u003ekeys() 117\u003c\/p\u003e \u003cp\u003evalues() 117\u003c\/p\u003e \u003cp\u003eeach() 117\u003c\/p\u003e \u003cp\u003eScoping Keywords 119\u003c\/p\u003e \u003cp\u003emy() 119\u003c\/p\u003e \u003cp\u003elocal() 119\u003c\/p\u003e \u003cp\u003eour() 120\u003c\/p\u003e \u003cp\u003estate() 120\u003c\/p\u003e \u003cp\u003eSummary 121\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5: Control Flow 125\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing the if Statement 126\u003c\/p\u003e \u003cp\u003eUnderstanding Basic Conditionals 126\u003c\/p\u003e \u003cp\u003eelse\/elsif\/unless 128\u003c\/p\u003e \u003cp\u003eThe Ternary Operator ?: 131\u003c\/p\u003e \u003cp\u003efor\/foreach loops 132\u003c\/p\u003e \u003cp\u003eArrays 132\u003c\/p\u003e \u003cp\u003eLists 135\u003c\/p\u003e \u003cp\u003eC-Style 136\u003c\/p\u003e \u003cp\u003eUsing while\/until Loops 142\u003c\/p\u003e \u003cp\u003eLists 143\u003c\/p\u003e \u003cp\u003elast\/next\/redo\/continue 144\u003c\/p\u003e \u003cp\u003eLabels 146\u003c\/p\u003e \u003cp\u003eStatement Modifiers 147\u003c\/p\u003e \u003cp\u003eTypes of Statement Modifiers 147\u003c\/p\u003e \u003cp\u003edo while\/do until 149\u003c\/p\u003e \u003cp\u003egiven\/when 151\u003c\/p\u003e \u003cp\u003eBasic Syntax 151\u003c\/p\u003e \u003cp\u003eThe Switch Module 153\u003c\/p\u003e \u003cp\u003eSummary 154\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6: References 157\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eReferences 101 158\u003c\/p\u003e \u003cp\u003eArray References 158\u003c\/p\u003e \u003cp\u003eHash References 159\u003c\/p\u003e \u003cp\u003eAnonymous References 160\u003c\/p\u003e \u003cp\u003eOther References 163\u003c\/p\u003e \u003cp\u003eWorking with References 166\u003c\/p\u003e \u003cp\u003eDebugging 166\u003c\/p\u003e \u003cp\u003eCopying 169\u003c\/p\u003e \u003cp\u003eSlices 172\u003c\/p\u003e \u003cp\u003eSummary 173\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7: Subroutines 175\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eSubroutine Syntax 176\u003c\/p\u003e \u003cp\u003eArgument Handling 177\u003c\/p\u003e \u003cp\u003eMultiple Arguments 178\u003c\/p\u003e \u003cp\u003eNamed Arguments 179\u003c\/p\u003e \u003cp\u003eAliasing 181\u003c\/p\u003e \u003cp\u003eState Variables (Pre- and Post-5.10) 181\u003c\/p\u003e \u003cp\u003ePassing a List, Hash, or Hashref? 184\u003c\/p\u003e \u003cp\u003eReturning Data 186\u003c\/p\u003e \u003cp\u003eReturning True\/False 186\u003c\/p\u003e \u003cp\u003eReturning Single and Multiple Values 188\u003c\/p\u003e \u003cp\u003ewantarray 189\u003c\/p\u003e \u003cp\u003eFAIL! 190\u003c\/p\u003e \u003cp\u003e“Wake Up! Time to Die!” 191\u003c\/p\u003e \u003cp\u003ecarp and croak 192\u003c\/p\u003e \u003cp\u003eeval 192\u003c\/p\u003e \u003cp\u003eevalGotchas 194\u003c\/p\u003e \u003cp\u003eTry::Tiny 195\u003c\/p\u003e \u003cp\u003eSubroutine References 196\u003c\/p\u003e \u003cp\u003eExisting Subroutines 196\u003c\/p\u003e \u003cp\u003eAnonymous Subroutines 197\u003c\/p\u003e \u003cp\u003eClosures 197\u003c\/p\u003e \u003cp\u003ePrototypes 200\u003c\/p\u003e \u003cp\u003eArgument Coercion 200\u003c\/p\u003e \u003cp\u003eMore Prototype Tricks 202\u003c\/p\u003e \u003cp\u003eMimicking Builtins 204\u003c\/p\u003e \u003cp\u003eForward Declarations 206\u003c\/p\u003e \u003cp\u003ePrototype Summary 207\u003c\/p\u003e \u003cp\u003eRecursion 209\u003c\/p\u003e \u003cp\u003eBasic Recursion 209\u003c\/p\u003e \u003cp\u003eDivide and Conquer 210\u003c\/p\u003e \u003cp\u003eMemoization 211\u003c\/p\u003e \u003cp\u003eThings to Watch For 215\u003c\/p\u003e \u003cp\u003eArgument Aliasing 215\u003c\/p\u003e \u003cp\u003eScope Issues 216\u003c\/p\u003e \u003cp\u003eDoing Too Much 216\u003c\/p\u003e \u003cp\u003eToo Many Arguments 217\u003c\/p\u003e \u003cp\u003eSummary 217\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8: Regular Expressions 219\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Matching 220\u003c\/p\u003e \u003cp\u003eQuantifiers 221\u003c\/p\u003e \u003cp\u003eEscape Sequences 223\u003c\/p\u003e \u003cp\u003eExtracting Data 226\u003c\/p\u003e \u003cp\u003eModifiers and Anchors 228\u003c\/p\u003e \u003cp\u003eCharacter Classes 231\u003c\/p\u003e \u003cp\u003eGrouping 232\u003c\/p\u003e \u003cp\u003eAdvanced Matching 235\u003c\/p\u003e \u003cp\u003eSubstitutions 235\u003c\/p\u003e \u003cp\u003eLookahead\/Lookbehind Anchors 236\u003c\/p\u003e \u003cp\u003eNamed Subexpressions (5.10) 238\u003c\/p\u003e \u003cp\u003eCommon Regular Expression Issues 241\u003c\/p\u003e \u003cp\u003eRegexp::Common 241\u003c\/p\u003e \u003cp\u003eE-mail Addresses 242\u003c\/p\u003e \u003cp\u003eHTML 242\u003c\/p\u003e \u003cp\u003eComposing Regular Expressions 243\u003c\/p\u003e \u003cp\u003eSummary 245\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9: Files and Directories 249\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic File Handling 250\u003c\/p\u003e \u003cp\u003eOpening and Reading a File 250\u003c\/p\u003e \u003cp\u003eFile Test Operators 258\u003c\/p\u003e \u003cp\u003eThe Diamond Operator 260\u003c\/p\u003e \u003cp\u003eTemporary Files 260\u003c\/p\u003e \u003cp\u003eDATA as a File 261\u003c\/p\u003e \u003cp\u003ebinmode 262\u003c\/p\u003e \u003cp\u003eDirectories 265\u003c\/p\u003e \u003cp\u003eReading Directories 265\u003c\/p\u003e \u003cp\u003eGlobbing 265\u003c\/p\u003e \u003cp\u003eUnicode 266\u003c\/p\u003e \u003cp\u003eWhat is Unicode? 267\u003c\/p\u003e \u003cp\u003eTwo Simple Rules 267\u003c\/p\u003e \u003cp\u003eLots of Complicated Rules 271\u003c\/p\u003e \u003cp\u003eUseful Modules 276\u003c\/p\u003e \u003cp\u003eFile::Find 276\u003c\/p\u003e \u003cp\u003eFile::Path 278\u003c\/p\u003e \u003cp\u003eFile::Find::Rule 279\u003c\/p\u003e \u003cp\u003eSummary 284\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10: Sort, Map, and Grep 287\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Sorting 288\u003c\/p\u003e \u003cp\u003eSorting Alphabetically 288\u003c\/p\u003e \u003cp\u003eSorting Numerically 289\u003c\/p\u003e \u003cp\u003eReverse Sorting 290\u003c\/p\u003e \u003cp\u003eComplex Sort Conditions 290\u003c\/p\u003e \u003cp\u003eWriting a sort Subroutine 292\u003c\/p\u003e \u003cp\u003eSorting and Unicode Fun! 293\u003c\/p\u003e \u003cp\u003emap and grep 297\u003c\/p\u003e \u003cp\u003eUsing grep 298\u003c\/p\u003e \u003cp\u003eUsing map 303\u003c\/p\u003e \u003cp\u003eAliasing Issues 305\u003c\/p\u003e \u003cp\u003eTrying to Do Too Much 306\u003c\/p\u003e \u003cp\u003eTrying to Be Clever 307\u003c\/p\u003e \u003cp\u003ePutting It All Together 308\u003c\/p\u003e \u003cp\u003eSchwartzian Transform (aka decorate, sort, undecorate) 308\u003c\/p\u003e \u003cp\u003eGuttman-Rosler Transform 310\u003c\/p\u003e \u003cp\u003eSummary 311\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11: Packages and Modules 315\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eNamespaces and Packages 316\u003c\/p\u003e \u003cp\u003euse Versus require 321\u003c\/p\u003e \u003cp\u003ePackage Variables 323\u003c\/p\u003e \u003cp\u003eVersion Numbers 326\u003c\/p\u003e \u003cp\u003eSubroutines in Other Packages 327\u003c\/p\u003e \u003cp\u003eExporting 327\u003c\/p\u003e \u003cp\u003eNaming Conventions 330\u003c\/p\u003e \u003cp\u003eBEGIN, UNITCHECK, CHECK, INIT, and END 335\u003c\/p\u003e \u003cp\u003eBEGIN blocks 336\u003c\/p\u003e \u003cp\u003eEND Blocks 337\u003c\/p\u003e \u003cp\u003eINIT, CHECK, and UNITCHECK Blocks 337\u003c\/p\u003e \u003cp\u003ePlain Old Documentation (POD) 338\u003c\/p\u003e \u003cp\u003eDocumentation Structure 340\u003c\/p\u003e \u003cp\u003eHeadings 340\u003c\/p\u003e \u003cp\u003eParagraphs 341\u003c\/p\u003e \u003cp\u003eLists 341\u003c\/p\u003e \u003cp\u003eVerbatim 342\u003c\/p\u003e \u003cp\u003eMiscellaneous 342\u003c\/p\u003e \u003cp\u003eCreating and Installing Modules 344\u003c\/p\u003e \u003cp\u003eCreating a Simple Module 344\u003c\/p\u003e \u003cp\u003eMakefi le.PL or Module::Build? 349\u003c\/p\u003e \u003cp\u003eSummary 349\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12: Object Oriented Perl 353\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat are Objects? The Ævar the Personal Shopper 354\u003c\/p\u003e \u003cp\u003eThree Rules of Perl OO 355\u003c\/p\u003e \u003cp\u003eClass is a Package 355\u003c\/p\u003e \u003cp\u003eAn Object is a Reference That Knows Its Class 356\u003c\/p\u003e \u003cp\u003eA Method is a Subroutine 358\u003c\/p\u003e \u003cp\u003eObjects – Another View 371\u003c\/p\u003e \u003cp\u003eUsing TV::Episode 371\u003c\/p\u003e \u003cp\u003eSubclassing 374\u003c\/p\u003e \u003cp\u003eUsing TV::Episode::Broadcast 375\u003c\/p\u003e \u003cp\u003eClass Versus Instance Data 379\u003c\/p\u003e \u003cp\u003eA Brief Recap 381\u003c\/p\u003e \u003cp\u003eOverloading Objects 381\u003c\/p\u003e \u003cp\u003eUsing UNIVERSAL 385\u003c\/p\u003e \u003cp\u003eUnderstanding Private Methods 387\u003c\/p\u003e \u003cp\u003eGotchas 393\u003c\/p\u003e \u003cp\u003eUnnecessary Methods 393\u003c\/p\u003e \u003cp\u003e“Reaching Inside” 394\u003c\/p\u003e \u003cp\u003eMultiple Inheritance 394\u003c\/p\u003e \u003cp\u003eSummary 397\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13: Moose 399\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUnderstanding Basic Moose Syntax 400\u003c\/p\u003e \u003cp\u003eUsing Attributes 402\u003c\/p\u003e \u003cp\u003eUsing Constructors 405\u003c\/p\u003e \u003cp\u003eUnderstanding Inheritance 408\u003c\/p\u003e \u003cp\u003eTaking Care of Your Moose 409\u003c\/p\u003e \u003cp\u003eAdvanced Moose Syntax 413\u003c\/p\u003e \u003cp\u003eUsing Type Constraints 414\u003c\/p\u003e \u003cp\u003eUsing Method Modifiers 417\u003c\/p\u003e \u003cp\u003eUnderstanding and Using Roles 420\u003c\/p\u003e \u003cp\u003eExploring MooseX 425\u003c\/p\u003e \u003cp\u003eRewriting Television::Episode 428\u003c\/p\u003e \u003cp\u003eMoose Best Practices 433\u003c\/p\u003e \u003cp\u003eUse namespace::autoclean and Make Your Class Immutable 434\u003c\/p\u003e \u003cp\u003eNever Override new() 434\u003c\/p\u003e \u003cp\u003eAlways Call Your Parent BUILDARGS Method 434\u003c\/p\u003e \u003cp\u003eProvide Defaults if an Attribute is Not Required 434\u003c\/p\u003e \u003cp\u003eDefault to Read-Only 434\u003c\/p\u003e \u003cp\u003ePut Your Custom Types in One Module and\u003c\/p\u003e \u003cp\u003eGive Them a Namespace 435\u003c\/p\u003e \u003cp\u003eDon’t Use Multiple Inheritance 435\u003c\/p\u003e \u003cp\u003eAlways Consume All Your Roles at Once 435\u003c\/p\u003e \u003cp\u003eSummary 436\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14: Testing 439\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eBasic Tests 440\u003c\/p\u003e \u003cp\u003eUsing Test::More 440\u003c\/p\u003e \u003cp\u003eWriting Your Tests 442\u003c\/p\u003e \u003cp\u003eUnderstanding the prove Utility 443\u003c\/p\u003e \u003cp\u003eUnderstanding Test::More Test Functions 444\u003c\/p\u003e \u003cp\u003eUsing ok 445\u003c\/p\u003e \u003cp\u003eUsing is 445\u003c\/p\u003e \u003cp\u003eUsing like 448\u003c\/p\u003e \u003cp\u003eUsing is_deeply 449\u003c\/p\u003e \u003cp\u003eUsing SKIP 450\u003c\/p\u003e \u003cp\u003eUsing TODO 450\u003c\/p\u003e \u003cp\u003eUsing eval {} 451\u003c\/p\u003e \u003cp\u003eUsing use_ok and require_ok 452\u003c\/p\u003e \u003cp\u003eWorking with Miscellaneous Test Functions 453\u003c\/p\u003e \u003cp\u003eUsing Other Testing Modules 457\u003c\/p\u003e \u003cp\u003eUsing Test::Diff erences 457\u003c\/p\u003e \u003cp\u003eUsing Test::Exception 459\u003c\/p\u003e \u003cp\u003eUsing Test::Warn 460\u003c\/p\u003e \u003cp\u003eUsing Test::Most 460\u003c\/p\u003e \u003cp\u003eUnderstanding xUnit Style Using Testing 461\u003c\/p\u003e \u003cp\u003eUsing Test::Class 461\u003c\/p\u003e \u003cp\u003eA Basic Test Class 463\u003c\/p\u003e \u003cp\u003eExtending a Test Class 467\u003c\/p\u003e \u003cp\u003eUsing Test Control Methods 471\u003c\/p\u003e \u003cp\u003eCalling Parent Test Control Methods 473\u003c\/p\u003e \u003cp\u003eSummary 477\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15: The Interwebs 481\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eA Brief Introduction to HTTP 482\u003c\/p\u003e \u003cp\u003ePlack 484\u003c\/p\u003e \u003cp\u003eHello, World! 484\u003c\/p\u003e \u003cp\u003eHandling Parameters 490\u003c\/p\u003e \u003cp\u003eTemplates 492\u003c\/p\u003e \u003cp\u003eHandling POST Requests 496\u003c\/p\u003e \u003cp\u003eSessions 500\u003c\/p\u003e \u003cp\u003eWeb Clients 511\u003c\/p\u003e \u003cp\u003eExtracting Links from Web Pages 512\u003c\/p\u003e \u003cp\u003eExtracting Comments from Web Pages 514\u003c\/p\u003e \u003cp\u003eFilling Out Forms Programmatically 515\u003c\/p\u003e \u003cp\u003eSummary 520\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16: Databases 523\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing the DBI 524\u003c\/p\u003e \u003cp\u003eConnecting to a Database 524\u003c\/p\u003e \u003cp\u003eUsing SQLite 527\u003c\/p\u003e \u003cp\u003eUsing DBD::SQLite 527\u003c\/p\u003e \u003cp\u003eSelecting Basic Data 533\u003c\/p\u003e \u003cp\u003eUsing SELECT Statements 533\u003c\/p\u003e \u003cp\u003eUsing Bind Parameters 536\u003c\/p\u003e \u003cp\u003eInserting and Updating Data 539\u003c\/p\u003e \u003cp\u003eCreating Transactions 540\u003c\/p\u003e \u003cp\u003eHandling Errors 541\u003c\/p\u003e \u003cp\u003eSummary 542\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 17: Plays Well with Others 545\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Command Line 546\u003c\/p\u003e \u003cp\u003eReading User Input 546\u003c\/p\u003e \u003cp\u003eHandling Command-Line Arguments 548\u003c\/p\u003e \u003cp\u003eperlrun 551\u003c\/p\u003e \u003cp\u003eOther Programs 556\u003c\/p\u003e \u003cp\u003eRunning an External Program 556\u003c\/p\u003e \u003cp\u003eReading Another Program’s Output 559\u003c\/p\u003e \u003cp\u003eWriting to Another Program’s Input 560\u003c\/p\u003e \u003cp\u003eSTDERR 562\u003c\/p\u003e \u003cp\u003eSummary 565\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 18: Common Tasks 567\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eUsing CSV Data 568\u003c\/p\u003e \u003cp\u003eReading CSV Data 569\u003c\/p\u003e \u003cp\u003eWriting CSV Data 570\u003c\/p\u003e \u003cp\u003eUnderstanding Basic XML 571\u003c\/p\u003e \u003cp\u003eReading CSV Data 572\u003c\/p\u003e \u003cp\u003eWriting CSV Data 576\u003c\/p\u003e \u003cp\u003eHandling Dates 580\u003c\/p\u003e \u003cp\u003eUsing the DateTime Module 580\u003c\/p\u003e \u003cp\u003eUsing Date::Tiny and DateTime::Tiny 581\u003c\/p\u003e \u003cp\u003eUnderstanding Your Program 587\u003c\/p\u003e \u003cp\u003eUsing the Debugger 587\u003c\/p\u003e \u003cp\u003eProfi ling 594\u003c\/p\u003e \u003cp\u003ePerl::Critic 604\u003c\/p\u003e \u003cp\u003eSummary 608\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 19: The Next Steps 611\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Next? 612\u003c\/p\u003e \u003cp\u003eWhat This Book Covers 612\u003c\/p\u003e \u003cp\u003eWhat This Book Leaves Out 613\u003c\/p\u003e \u003cp\u003eUnderstanding Object-Relational Mappers 613\u003c\/p\u003e \u003cp\u003eUnderstanding DBIx::Class 614\u003c\/p\u003e \u003cp\u003eUnderstanding Basic DBIx::Class Usage 614\u003c\/p\u003e \u003cp\u003eUnderstanding the Pros and Cons of an ORM 618\u003c\/p\u003e \u003cp\u003eUsing DBIx::Class::Schema::Loader 624\u003c\/p\u003e \u003cp\u003eUsing the Template Toolkit 625\u003c\/p\u003e \u003cp\u003eWhy Use Templates? 625\u003c\/p\u003e \u003cp\u003eAn Introduction to Template Toolkit 626\u003c\/p\u003e \u003cp\u003eUsing Catalyst to Build Apps 634\u003c\/p\u003e \u003cp\u003eThe Beauty of MVC 635\u003c\/p\u003e \u003cp\u003eSetting Up a Catalyst Application 635\u003c\/p\u003e \u003cp\u003eUsing Catalyst Views 641\u003c\/p\u003e \u003cp\u003eUsing Catalyst Models 643\u003c\/p\u003e \u003cp\u003eUsing Catalyst Controllers 646\u003c\/p\u003e \u003cp\u003eCRUD: Create, Read, Update, and Delete 648\u003c\/p\u003e \u003cp\u003eSummary 651\u003c\/p\u003e \u003cp\u003e\u003cb\u003eAppendix: Answers to Exercises 655\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIndex 695\u003c\/p\u003e\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e\u003cfont size=\"3\"\u003eSubject Areas: Computer programming \/ software development [\u003ca title=\"See our other books on Computer programming \/ software development\" href=\"https:\/\/freshlyprintedbooks.co.uk\/search?q=%22Computer%20programming%20\/%20software%20development%20%5BUM%5D%22\"\u003eUM\u003c\/a\u003e]\u003c\/font\u003e\u003c\/p\u003e\r\n\r\n\r\n\u003c\/font\u003e","brand":"Wrox","offers":[{"title":"Brand New","offer_id":52458214326552,"sku":"9781118013847","price":25.59,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0730\/2037\/5320\/files\/9781118013847.jpg?v=1785369726","url":"https:\/\/freshlyprintedbooks.co.uk\/products\/beginning-perl-paperback-softback-9781118013847","provider":"Freshly Printed Books","version":"1.0","type":"link"}