Programming Perl / (Record no. 5771)
[ view plain ]
| 000 -LEADER | |
|---|---|
| fixed length control field | 15765cam a22003374a 4500 |
| 001 - CONTROL NUMBER | |
| control field | 12040122 |
| 003 - CONTROL NUMBER IDENTIFIER | |
| control field | OSt |
| 005 - DATE AND TIME OF LATEST TRANSACTION | |
| control field | 20200121112912.0 |
| 008 - FIXED-LENGTH DATA ELEMENTS--GENERAL INFORMATION | |
| fixed length control field | 000614s2000 ch a 001 0 eng |
| 010 ## - LIBRARY OF CONGRESS CONTROL NUMBER | |
| LC control number | 00055799 |
| 020 ## - INTERNATIONAL STANDARD BOOK NUMBER | |
| International Standard Book Number | 9788173662652 |
| 040 ## - CATALOGING SOURCE | |
| Original cataloging agency | DLC |
| Transcribing agency | DLC |
| Modifying agency | DLC |
| 042 ## - AUTHENTICATION CODE | |
| Authentication code | pcc |
| 050 00 - LIBRARY OF CONGRESS CALL NUMBER | |
| Classification number | QA76.73.P22 |
| Item number | W35 2000 |
| 082 00 - DEWEY DECIMAL CLASSIFICATION NUMBER | |
| Classification number | 005.133 WAL |
| Edition number | 21 |
| 100 1# - MAIN ENTRY--PERSONAL NAME | |
| Personal name | Wall, Larry. |
| 245 10 - TITLE STATEMENT | |
| Title | Programming Perl / |
| Statement of responsibility, etc. | Larry Wall, Tom Christiansen & Jon Orwant. |
| 250 ## - EDITION STATEMENT | |
| Edition statement | 3rd ed. |
| 260 ## - PUBLICATION, DISTRIBUTION, ETC. | |
| Place of publication, distribution, etc. | Beijing ; |
| -- | Cambridge, Mass. : |
| Name of publisher, distributor, etc. | O'Reilly, |
| Date of publication, distribution, etc. | 2000. |
| 300 ## - PHYSICAL DESCRIPTION | |
| Extent | xxxiii, 1067 p. : |
| Other physical details | ill. ; |
| Dimensions | 24 cm. |
| 505 ## - FORMATTED CONTENTS NOTE | |
| Formatted contents note | Preface<br/>The Pursuit of Happiness<br/>What’s New in This Edition<br/>The Standard Distribution<br/>Online Documentation<br/>Navigating the Standard Manpages<br/>Non-Perl Manpages<br/>Offline Documentation<br/>Additional Resources<br/>Perl on the Web<br/>Bug Reports<br/>Conventions Used in This Book<br/>Acknowledgments<br/>Safari® Books Online<br/>We’d Like to Hear from You<br/>I. Overview<br/>1. An Overview of Perl<br/>Getting Started<br/>Natural and Artificial Languages<br/>Variable Syntax<br/>Singularities<br/>Pluralities<br/>Arrays<br/>Hashes<br/>Complexities<br/>Simplicities<br/>Verbs<br/>An Average Example<br/>How to Do It<br/>Filehandles<br/>Operators<br/>Some Binary Arithmetic Operators<br/>String Operators<br/>Assignment Operators<br/>Unary Arithmetic Operators<br/>Logical Operators<br/>Some Numeric and String Comparison Operators<br/>Some File Test Operators<br/>Control Structures<br/>What Is Truth?<br/>The if and unless statements<br/>The given and when Statements<br/>Looping Constructs<br/>Conditional loops<br/>The three-part loop<br/>The foreach loop<br/>Breaking out: next and last<br/>Regular Expressions<br/>Quantifiers<br/>Minimal Matching<br/>Nailing Things Down<br/>Backreferences<br/>List Processing<br/>What You Don’t Know Won’t Hurt You (Much)<br/>II. The Gory Details<br/>2. Bits and Pieces<br/>Atoms<br/>Molecules<br/>Built-in Data Types<br/>Variables<br/>Names<br/>Name Lookups<br/>Scalar Values<br/>Numeric Literals<br/>String Literals<br/>Pick Your Own Quotes<br/>Or Leave Out the Quotes Entirely<br/>Interpolating Array Values<br/>“Here” Documents<br/>Version Literals<br/>Other Literal Tokens<br/>Context<br/>Scalar and List Context<br/>Boolean Context<br/>Void Context<br/>Interpolative Context<br/>List Values and Arrays<br/>List Assignment<br/>Array Length<br/>Hashes<br/>Typeglobs and Filehandles<br/>Input Operators<br/>Command Input (Backtick) Operator<br/>Line Input (Angle) Operator<br/>Filename Globbing Operator<br/>3. Unary and Binary Operators<br/>Terms and List Operators (Leftward)<br/>The Arrow Operator<br/>Autoincrement and Autodecrement<br/>Exponentiation<br/>Ideographic Unary Operators<br/>Binding Operators<br/>Multiplicative Operators<br/>Additive Operators<br/>Shift Operators<br/>Named Unary and File Test Operators<br/>Relational Operators<br/>Equality Operators<br/>Smartmatch Operator<br/>Smartmatching of Objects<br/>Bitwise Operators<br/>C-Style Logical (Short-Circuit) Operators<br/>Range Operators<br/>Conditional Operator<br/>Assignment Operators<br/>Comma Operators<br/>List Operators (Rightward)<br/>Logical and, or, not, and xor<br/>C Operators Missing from Perl<br/>4. Statements and Declarations<br/>Simple Statements<br/>Compound Statements<br/>if and unless Statements<br/>The given Statement<br/>The when Statement and Modifier<br/>Loop Statements<br/>while and until Statements<br/>Three-Part Loops<br/>foreach Loops<br/>Loop Control<br/>Bare Blocks as Loops<br/>Loopy Topicalizers<br/>The goto Operator<br/>Paleolithic Perl Case Structures<br/>The Ellipsis Statement<br/>Global Declarations<br/>Scoped Declarations<br/>Scoped Variable Declarations<br/>Lexically Scoped Variables: my<br/>Persistent Lexically Scoped Variables: state<br/>Lexically Scoped Global Declarations: our<br/>Dynamically Scoped Variables: local<br/>Pragmas<br/>Controlling Warnings<br/>Controlling the Use of Globals<br/>5. Pattern Matching<br/>The Regular Expression Bestiary<br/>Pattern-Matching Operators<br/>Pattern Modifiers<br/>The m// Operator (Matching)<br/>The s/// Operator (Substitution)<br/>Modifying strings en passant<br/>Modifying arrays en masse<br/>When a global substitution just isn’t global enough<br/>The tr/// Operator (Transliteration)<br/>Metacharacters and Metasymbols<br/>Metasymbol Tables<br/>Specific Characters<br/>Wildcard Metasymbols<br/>Character Classes<br/>Bracketed Character Classes<br/>Classic Perl Character Class Shortcuts<br/>Character Properties<br/>POSIX-Style Character Classes<br/>Quantifiers<br/>Positions<br/>Beginnings: The \A and ^ Assertions<br/>Endings: The \z, \Z, and $ Assertions<br/>Boundaries: The \b and \B Assertions<br/>Progressive Matching<br/>Where You Left Off: The \G Assertion<br/>Grouping and Capturing<br/>Capturing<br/>Named capture groups<br/>Grouping Without Capturing<br/>Scoped Pattern Modifiers<br/>Alternation<br/>Staying in Control<br/>Letting Perl Do the Work<br/>Variable Interpolation<br/>When backslashes happen<br/>The qr/PATTERN/modifiers quote regex operator<br/>The Regex Compiler<br/>The Little Engine That /Could(n’t)?/<br/>Fancy Patterns<br/>Lookaround Assertions<br/>Possessive Groups<br/>Programmatic Patterns<br/>Generated patterns<br/>Substitution evaluations<br/>Match-time code evaluation<br/>Match-time pattern interpolation<br/>Conditional interpolation<br/>Recursive Patterns<br/>Grammatical Patterns<br/>Grammars<br/>Defining Your Own Assertions<br/>Alternate Engines<br/>6. Unicode<br/>Show, Don’t Tell<br/>Getting at Unicode Data<br/>The Encode Module<br/>A Case of Mistaken Identity<br/>Graphemes and Normalization<br/>Comparing and Sorting Unicode Text<br/>Using the uca with Perl’s sort<br/>Locale Sorting<br/>More Goodies<br/>Custom Regex Boundaries<br/>Building Character<br/>References<br/>7. Subroutines<br/>Syntax<br/>Semantics<br/>Tricks with Parameter Lists<br/>Error Indications<br/>Scoping Issues<br/>Passing References<br/>Prototypes<br/>Inlining Constant Functions<br/>Care with Prototypes<br/>Prototypes of Built-in Functions<br/>Subroutine Attributes<br/>The method Attribute<br/>The lvalue Attribute<br/>8. References<br/>What Is a Reference?<br/>Creating References<br/>The Backslash Operator<br/>Anonymous Data<br/>The anonymous array composer<br/>The anonymous hash composer<br/>The anonymous subroutine composer<br/>Object Constructors<br/>Handle References<br/>Symbol Table References<br/>Implicit Creation of References<br/>Using Hard References<br/>Using a Variable As a Variable Name<br/>Using a block As a Variable Name<br/>Using the Arrow Operator<br/>Using Object Methods<br/>Pseudohashes<br/>Other Tricks You Can Do with Hard References<br/>Closures<br/>Closures as function templates<br/>Nested subroutines<br/>Symbolic References<br/>Braces, Brackets, and Quoting<br/>References Don’t Work As Hash Keys<br/>Garbage Collection, Circular References, and Weak References<br/>9. Data Structures<br/>Arrays of Arrays<br/>Creating and Accessing a Two-Dimensional Array<br/>Growing Your Own<br/>Access and Printing<br/>Slices<br/>Common Mistakes<br/>Hashes of Arrays<br/>Composition of a Hash of Arrays<br/>Generation of a Hash of Arrays<br/>Access and Printing of a Hash of Arrays<br/>Arrays of Hashes<br/>Composition of an Array of Hashes<br/>Generation of an Array of Hashes<br/>Access and Printing of an Array of Hashes<br/>Hashes of Hashes<br/>Composition of a Hash of Hashes<br/>Generation of a Hash of Hashes<br/>Access and Printing of a Hash of Hashes<br/>Hashes of Functions<br/>More Elaborate Records<br/>Composition, Access, and Printing of More Elaborate Records<br/>Composition, Access, and Printing of Even More Elaborate Records<br/>Generation of a Hash of Complex Records<br/>Saving Data Structures<br/>10. Packages<br/>Symbol Tables<br/>Qualified Names<br/>The Default Package<br/>Changing the Package<br/>Autoloading<br/>11. Modules<br/>Loading Modules<br/>Unloading Modules<br/>Creating Modules<br/>Naming Modules<br/>A Sample Module<br/>Module Privacy and the Exporter<br/>Exporting without using Exporter’s import method<br/>Version checking<br/>Managing unknown symbols<br/>Tag-handling utility functions<br/>Overriding Built-in Functions<br/>12. Objects<br/>Brief Refresher on Object-Oriented Lingo<br/>Perl’s Object System<br/>Method Invocation<br/>Method Invocation Using the Arrow Operator<br/>Method Invocation Using Indirect Objects<br/>Syntactic Snafus with Indirect Objects<br/>Package-Quoted Classes<br/>Object Construction<br/>Inheritable Constructors<br/>Initializers<br/>Class Inheritance<br/>Inheritance Through @ISA<br/>Alternate Method Searching<br/>Accessing Overridden Methods<br/>UNIVERSAL: The Ultimate Ancestor Class<br/>Method Autoloading<br/>Private Methods<br/>Instance Destructors<br/>Garbage Collection with destroy Methods<br/>Managing Instance Data<br/>Generating Accessors with Autoloading<br/>Generating Accessors with Closures<br/>Using Closures for Private Objects<br/>New Tricks<br/>Managing Class Data<br/>The Moose in the Room<br/>Summary<br/>13. Overloading<br/>The overload Pragma<br/>Overload Handlers<br/>Overloadable Operators<br/>The Copy Constructor (=)<br/>When an Overload Handler Is Missing (nomethod and fallback)<br/>Overloading Constants<br/>Public Overload Functions<br/>Inheritance and Overloading<br/>Runtime Overloading<br/>Overloading Diagnostics<br/>14. Tied Variables<br/>Tying Scalars<br/>Scalar-Tying Methods<br/>Magical Counter Variables<br/>Cycling Through Values<br/>Magically Banishing $_<br/>Tying Arrays<br/>Array-Tying Methods<br/>Notational Convenience<br/>Tying Hashes<br/>Hash-Tying Methods<br/>Tying Filehandles<br/>Filehandle-Tying Methods<br/>Creative Filehandles<br/>A Subtle Untying Trap<br/>Tie Modules on CPAN<br/>III. Perl as Technology<br/>15. Interprocess Communication<br/>Signals<br/>Signalling Process Groups<br/>Reaping Zombies<br/>Timing Out Slow Operations<br/>Blocking Signals<br/>Signal Safety<br/>Files<br/>File Locking<br/>Passing Filehandles<br/>Pipes<br/>Anonymous Pipes<br/>Talking to Yourself<br/>Bidirectional Communication<br/>Named Pipes<br/>System V IPC<br/>Sockets<br/>Networking Clients<br/>Networking Servers<br/>Message Passing<br/>16. Compiling<br/>The Life Cycle of a Perl Program<br/>Compiling Your Code<br/>Executing Your Code<br/>Compiler Backends<br/>Code Generators<br/>The Bytecode Generator<br/>The C Code Generators<br/>Code Development Tools<br/>Avant-Garde Compiler, Retro Interpreter<br/>17. The Command-Line Interface<br/>Command Processing<br/>#! and Quoting on Non-Unix Systems<br/>Location of Perl<br/>Switches<br/>Environment Variables<br/>18. The Perl Debugger<br/>Using the Debugger<br/>Debugger Commands<br/>Stepping and Running<br/>Breakpoints<br/>Tracing<br/>Display<br/>Locating Code<br/>Actions and Command Execution<br/>Miscellaneous Commands<br/>Debugger Customization<br/>Editor Support for Debugging<br/>Customizing with Init Files<br/>Debugger Options<br/>Unattended Execution<br/>Debugger Support<br/>Writing Your Own Debugger<br/>Profiling Perl<br/>Devel::DProf<br/>Devel::NYTProf<br/>19. CPAN<br/>History<br/>A Tour of the Repository<br/>Creating a MiniCPAN<br/>The CPAN Ecosystem<br/>PAUSE<br/>Searching CPAN<br/>Testing<br/>Bug Tracking<br/>rt.cpan.org<br/>Other bug tracking<br/>perlbug<br/>rt.perl.org<br/>Installing CPAN Modules<br/>By Hand<br/>CPAN Clients<br/>cpan<br/>cpanp<br/>cpanminus<br/>Creating CPAN Distributions<br/>Starting Your Distribution<br/>h2xs<br/>Distribution::Cooker<br/>Module::Starter<br/>Dist::Zilla<br/>Testing Your Modules<br/>Internal testing<br/>External testing<br/>IV. Perl as Culture<br/>20. Security<br/>Handling Insecure Data<br/>Detecting and Laundering Tainted Data<br/>Cleaning Up Your Environment<br/>Accessing Commands and Files Under Reduced Privileges<br/>Defeating Taint Checking<br/>Handling Timing Glitches<br/>Unix Kernel Security Bugs<br/>Handling Race Conditions<br/>Temporary Files<br/>Handling Insecure Code<br/>Changing Root<br/>Safe Compartments<br/>Restricting namespace access<br/>Restricting operator access<br/>Safe examples<br/>Code Masquerading As Data<br/>21. Common Practices<br/>Common Goofs for Novices<br/>Universal Blunders<br/>Frequently Ignored Advice<br/>C Traps<br/>Shell Traps<br/>Python Traps<br/>Ruby Traps<br/>Java Traps<br/>Efficiency<br/>Time Efficiency<br/>Space Efficiency<br/>Programmer Efficiency<br/>Maintainer Efficiency<br/>Porter Efficiency<br/>User Efficiency<br/>Programming with Style<br/>Fluent Perl<br/>Program Generation<br/>Generating Other Languages in Perl<br/>Generating Perl in Other Languages<br/>Source Filters<br/>22. Portable Perl<br/>Newlines<br/>Endianness and Number Width<br/>Files and Filesystems<br/>System Interaction<br/>Interprocess Communication (IPC)<br/>External Subroutines (XS)<br/>Standard Modules<br/>Dates and Times<br/>Internationalization<br/>Style<br/>23. Plain Old Documentation<br/>Pod in a Nutshell<br/>Verbatim Paragraphs<br/>Command Paragraphs<br/>Flowed Text<br/>Pod Translators and Modules<br/>Writing Your Own Pod Tools<br/>Pod Pitfalls<br/>Documenting Your Perl Programs<br/>24. Perl Culture<br/>History Made Practical<br/>Perl Poetry<br/>Virtues of the Perl Programmer<br/>Events<br/>Getting Help<br/>V. Reference Material<br/>25. Special Names<br/>Special Names Grouped by Type<br/>Regular Expression Special Variables<br/>Per-Filehandle Variables<br/>Per-Package Special Variables<br/>Program-Wide Special Variables<br/>Per-Package Special Filehandles<br/>Per-Package Special Functions<br/>Special Variables in Alphabetical Order<br/>26. Formats<br/>String Formats<br/>Binary Formats<br/>pack<br/>Repetition<br/>Other modifiers<br/>More examples<br/>unpack<br/>Picture Formats<br/>Format Variables<br/>Footers<br/>Accessing Formatting Internals<br/>27. Functions<br/>Perl Functions by Category<br/>Perl Functions in Alphabetical Order (A–G)<br/>abs<br/>accept<br/>alarm<br/>atan2<br/>bind<br/>binmode<br/>bless<br/>break<br/>caller<br/>chdir<br/>chmod<br/>chomp<br/>chop<br/>chown<br/>chr<br/>chroot<br/>close<br/>closedir<br/>connect<br/>continue<br/>cos<br/>crypt<br/>dbmclose<br/>dbmopen<br/>defined<br/>delete<br/>die<br/>do (block)<br/>do (file)<br/>do (subroutine)<br/>dump<br/>each<br/>eof<br/>eval<br/>exec<br/>exists<br/>exit<br/>exp<br/>_ _FILE_ _<br/>fc<br/>fcntl<br/>fileno<br/>flock<br/>fork<br/>format<br/>formline<br/>getc<br/>getgrent<br/>getgrgid<br/>getgrnam<br/>gethostbyaddr<br/>gethostbyname<br/>gethostent<br/>getlogin<br/>getnetbyaddr<br/>getnetbyname<br/>getnetent<br/>getpeername<br/>getpgrp<br/>getppid<br/>getpriority<br/>getprotobyname<br/>getprotobynumber<br/>getprotoent<br/>getpwent<br/>getpwnam<br/>getpwuid<br/>getservbyname<br/>getservbyport<br/>getservent<br/>getsockname<br/>getsockopt<br/>glob<br/>gmtime<br/>goto<br/>grep<br/>Perl Functions in Alphabetical Order (H–R)<br/>hex<br/>import<br/>index<br/>int<br/>ioctl<br/>join<br/>keys<br/>kill<br/>last<br/>lc<br/>lcfirst<br/>length<br/>_ _LINE_ _<br/>link<br/>listen<br/>local<br/>localtime<br/>lock<br/>log<br/>lstat<br/>m//<br/>map<br/>mkdir<br/>msgctl<br/>msgget<br/>msgrcv<br/>msgsnd<br/>my<br/>new<br/>next<br/>no<br/>oct<br/>open<br/>opendir<br/>ord<br/>our<br/>pack<br/>package<br/>_ _PACKAGE_ _<br/>pipe<br/>pop<br/>pos<br/>print<br/>printf<br/>prototype<br/>push<br/>q/STRING/<br/>quotemeta<br/>rand<br/>read<br/>readdir<br/>readline<br/>readlink<br/>readpipe<br/>recv<br/>redo<br/>ref<br/>rename<br/>require<br/>reset<br/>return<br/>reverse<br/>rewinddir<br/>rindex<br/>rmdir<br/>Perl Functions in Alphabetical Order (S–Y)<br/>s///<br/>say<br/>scalar<br/>seek<br/>seekdir<br/>select (output filehandle)<br/>select (ready file descriptors)<br/>semctl<br/>semget<br/>semop<br/>send<br/>setpgrp<br/>setpriority<br/>setsockopt<br/>shift<br/>shmctl<br/>shmget<br/>shmread<br/>shmwrite<br/>shutdown<br/>sin<br/>sleep<br/>socket<br/>socketpair<br/>sort<br/>splice<br/>split<br/>sprintf<br/>sqrt<br/>srand<br/>stat<br/>state<br/>study<br/>sub<br/>substr<br/>symlink<br/>syscall<br/>sysopen<br/>sysread<br/>sysseek<br/>system<br/>syswrite<br/>tell<br/>telldir<br/>tie<br/>tied<br/>time<br/>times<br/>tr///<br/>truncate<br/>uc<br/>ucfirst<br/>umask<br/>undef<br/>unlink<br/>unpack<br/>unshift<br/>untie<br/>use<br/>utime<br/>values<br/>vec<br/>wait<br/>waitpid<br/>wantarray<br/>warn<br/>write<br/>y//<br/>28. The Standard Perl Library<br/>Library Science<br/>A Tour of the Perl Library<br/>Roll Call<br/>The Future of the Standard Perl Library<br/>Wandering the Stacks<br/>29. Pragmatic Modules<br/>attributes<br/>autodie<br/>autouse<br/>base<br/>bigint<br/>bignum<br/>bigrat<br/>blib<br/>bytes<br/>charnames<br/>Custom Character Names<br/>Runtime Lookups<br/>constant<br/>Restrictions on constant<br/>deprecate<br/>diagnostics<br/>encoding<br/>feature<br/>fields<br/>filetest<br/>if<br/>inc::latest<br/>integer<br/>less<br/>lib<br/>locale<br/>mro<br/>open<br/>ops<br/>overload<br/>overloading<br/>parent<br/>re<br/>sigtrap<br/>Signal Handlers<br/>Predefined Signal Lists<br/>Other Arguments to sigtrap<br/>Examples of sigtrap<br/>sort<br/>strict<br/>strict "refs"<br/>strict "vars"<br/>strict "subs"<br/>subs<br/>threads<br/>utf8<br/>vars<br/>version<br/>vmsish<br/>exit<br/>hushed<br/>status<br/>time<br/>warnings<br/>User-Defined Pragmas<br/>Glossary<br/>Index of Perl Modules in This Book<br/>Index<br/>About the Authors<br/>Colophon<br/>Copyright |
| 650 #0 - SUBJECT ADDED ENTRY--TOPICAL TERM | |
| Topical term or geographic name entry element | Perl (Computer program language) |
| 700 1# - ADDED ENTRY--PERSONAL NAME | |
| Personal name | Christiansen, Tom. |
| 700 1# - ADDED ENTRY--PERSONAL NAME | |
| Personal name | Orwant, Jon. |
| 856 42 - ELECTRONIC LOCATION AND ACCESS | |
| Materials specified | Publisher description |
| Uniform Resource Identifier | <a href="http://www.loc.gov/catdir/enhancements/fy0715/00055799-d.html">http://www.loc.gov/catdir/enhancements/fy0715/00055799-d.html</a> |
| 856 42 - ELECTRONIC LOCATION AND ACCESS | |
| Materials specified | Contributor biographical information |
| Uniform Resource Identifier | <a href="http://www.loc.gov/catdir/enhancements/fy0912/00055799-b.html">http://www.loc.gov/catdir/enhancements/fy0912/00055799-b.html</a> |
| 856 41 - ELECTRONIC LOCATION AND ACCESS | |
| Materials specified | Table of contents only |
| Uniform Resource Identifier | <a href="http://www.loc.gov/catdir/enhancements/fy1008/00055799-t.html">http://www.loc.gov/catdir/enhancements/fy1008/00055799-t.html</a> |
| 906 ## - LOCAL DATA ELEMENT F, LDF (RLIN) | |
| a | 7 |
| b | cbc |
| c | orignew |
| d | 1 |
| e | ocip |
| f | 20 |
| g | y-gencatlg |
| 942 ## - ADDED ENTRY ELEMENTS (KOHA) | |
| Source of classification or shelving scheme | Dewey Decimal Classification |
| Koha item type | Reference text books |
| Withdrawn status | Lost status | Source of classification or shelving scheme | Damaged status | Not for loan | Collection code | Home library | Current library | Date acquired | Total Checkouts | Full call number | Barcode | Date last seen | Price effective from | Koha item type |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dewey Decimal Classification | R-1/3 | All India Institute of Speech and Hearing | All India Institute of Speech and Hearing | 21/01/2020 | 005.133 WAL | 17410 | 21/01/2020 | 21/01/2020 | Reference text books |