About the Author |
|
xi | |
About the Technical Reviewer |
|
xiii | |
Acknowledgments |
|
xv | |
Foreword |
|
xvii | |
|
Chapter 1 What Is Perl 6? |
|
|
1 | (4) |
|
1.1 Perl 5, the Older Sister |
|
|
1 | (1) |
|
|
2 | (1) |
|
1.3 Why Should I Use Perl 6? |
|
|
2 | (1) |
|
|
3 | (2) |
|
Chapter 2 Running Rakudo Perl 6 |
|
|
5 | (4) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
7 | (1) |
|
2.4 Testing Your Rakudo Star Installation |
|
|
8 | |
|
|
8 | (1) |
|
|
8 | (1) |
|
Chapter 3 Formatting a Sudoku Puzzle |
|
|
9 | (14) |
|
3.1 Making the Sudoku Playable |
|
|
12 | (4) |
|
3.2 Shortcuts, Constants, and More Shortcuts |
|
|
16 | (2) |
|
3.3 I/O and Other Tragedies |
|
|
18 | (2) |
|
|
20 | (1) |
|
|
21 | (2) |
|
Chapter 4 Datetime Conversion for the Command Line |
|
|
23 | (16) |
|
4.1 Libraries to the Rescue |
|
|
23 | (3) |
|
|
26 | (2) |
|
4.3 Looking the Other Way |
|
|
28 | (2) |
|
|
30 | (1) |
|
4.5 Tighten Your Seat Belt |
|
|
31 | (2) |
|
|
33 | (1) |
|
|
34 | (4) |
|
|
38 | (1) |
|
|
39 | (4) |
|
|
42 | (1) |
|
Chapter 6 Silent-Cron, a Cron Wrapper |
|
|
43 | (18) |
|
6.1 Running Commands Asynchronously |
|
|
43 | (3) |
|
6.2 Implementing Timeouts |
|
|
46 | (2) |
|
|
48 | (3) |
|
|
51 | (1) |
|
6.5 Refactoring and Automated Tests |
|
|
51 | (8) |
|
|
51 | (2) |
|
6.5.2 Mocking and Testing |
|
|
53 | (5) |
|
6.5.3 Improving Reliability and Timing |
|
|
58 | (1) |
|
6.5.4 Installing a Module |
|
|
58 | (1) |
|
|
59 | (2) |
|
Chapter 7 Stateful Silent-Cron |
|
|
61 | (6) |
|
|
61 | (1) |
|
7.2 Developing the Storage Back End |
|
|
62 | (3) |
|
7.3 Using the Storage Back End |
|
|
65 | (1) |
|
|
66 | (1) |
|
|
66 | (1) |
|
Chapter 8 Review of the Perl 6 Basics |
|
|
67 | (6) |
|
8.1 Variables and Scoping |
|
|
67 | (1) |
|
|
67 | (2) |
|
|
69 | (2) |
|
|
71 | (1) |
|
|
71 | (2) |
|
Chapter 9 Parsing INI Files Using Regexes and Grammars |
|
|
73 | (22) |
|
|
74 | (2) |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
76 | (1) |
|
9.2 Parsing the INI Primitives |
|
|
76 | (3) |
|
9.3 Putting Things Together |
|
|
79 | (1) |
|
|
80 | (2) |
|
|
82 | (1) |
|
9.6 Extracting Data from the Match |
|
|
83 | (5) |
|
9.7 Generating Good Error Messages |
|
|
88 | (5) |
|
|
88 | (1) |
|
9.7.2 Detecting Harmful Failure |
|
|
89 | (1) |
|
|
90 | (2) |
|
9.7.4 Shortcuts for Parsing Matching Pairs |
|
|
92 | (1) |
|
9.8 Write Your Own Grammars |
|
|
93 | (1) |
|
|
93 | (2) |
|
Chapter 10 A File and Directory Usage Graph |
|
|
95 | (18) |
|
|
95 | (2) |
|
10.2 Generating a Tree Map |
|
|
97 | (4) |
|
|
101 | (2) |
|
10.4 Functional Refactorings |
|
|
103 | (6) |
|
10.5 More Language Support for Functional Programming |
|
|
109 | (1) |
|
|
110 | (1) |
|
|
111 | (1) |
|
|
112 | (1) |
|
Chapter 11 A Unicode Search Tool |
|
|
113 | (6) |
|
11.1 Code Points, Grapheme Clusters, and Bytes |
|
|
115 | (1) |
|
|
116 | (1) |
|
11.3 Other Unicode Properties |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
Chapter 12 Plotting Using Inline::Python and Matplotlib |
|
|
119 | (16) |
|
12.1 Extracting the Stats |
|
|
119 | (1) |
|
12.2 Plotting with Python |
|
|
120 | (2) |
|
|
122 | (1) |
|
12.4 Using the Bridge to Plot |
|
|
123 | (2) |
|
|
125 | (4) |
|
12.6 Idiomatic Use of Inline::Python |
|
|
129 | (5) |
|
12.6.1 Types of Python APIs |
|
|
129 | (1) |
|
12.6.2 Mapping the Function API |
|
|
130 | (2) |
|
12.6.3 An Object-Oriented Interface |
|
|
132 | (2) |
|
|
134 | (1) |
|
|
135 | (4) |
|
13.1 Scaling Your Code Base |
|
|
135 | (1) |
|
13.2 Packaging Your Application |
|
|
136 | (1) |
|
13.2.1 Packaging as a Traditional Perl 6 Module |
|
|
136 | (1) |
|
13.2.2 Deploying with Docker |
|
|
137 | |
|
13.2.3 Windows Installers |
|
|
137 | (1) |
|
|
137 | (2) |
Index |
|
139 | |