Perl for System Administration

Total Page:16

File Type:pdf, Size:1020Kb

Perl for System Administration Perl for System Administration Jacinta Richardson Paul Fenwick Perl for System Administration by Jacinta Richardson and Paul Fenwick Copyright © 2006-2008 Jacinta Richardson ([email protected]) Copyright © 2006-2008 Paul Fenwick ([email protected]) Copyright © 2006-2008 Perl Training Australia (http://perltraining.com.au) Conventions used throughout this text are based upon the conventions used in the Netizen training manuals by Kirrily Robert, and found at http://sourceforge.net/projects/spork Distribution of this work is prohibited unless prior permission is obtained from the copyright holder. This training manual is maintained by Perl Training Australia, and can be found at http://www.perltraining.com.au/notes.html. This is revision 1.2 of Perl Training Australia’s "Perl for System Administrators" training manual. Table of Contents 1. About Perl Training Australia....................................................................................................... 1 Training....................................................................................................................................... 1 Consulting ................................................................................................................................... 1 Contact us.................................................................................................................................... 1 2. Introduction..................................................................................................................................... 3 Course outline ............................................................................................................................. 3 Assumed knowledge ................................................................................................................... 3 Module objectives ....................................................................................................................... 3 Platform and version details........................................................................................................ 3 The course notes.......................................................................................................................... 4 Other materials............................................................................................................................ 4 3. Why use Perl for System Administration? ................................................................................... 5 4. Perl Basics........................................................................................................................................ 7 In this chapter.............................................................................................................................. 7 Important basics .......................................................................................................................... 7 Help ................................................................................................................................... 7 Shebang line ...................................................................................................................... 7 Strictures and warnings ..................................................................................................... 7 Strict......................................................................................................................... 8 Warnings .................................................................................................................. 8 Comments.......................................................................................................................... 8 Starting your program........................................................................................................ 9 Variables...................................................................................................................................... 9 Scalars................................................................................................................................ 9 Quotes and interpolation........................................................................................10 Arrays ..............................................................................................................................10 Array lookups.........................................................................................................11 Changing array elements........................................................................................11 Adding array elements ...........................................................................................11 Counting backwards...............................................................................................11 Last index...............................................................................................................11 Array length ...........................................................................................................11 Interpolation...........................................................................................................12 Hashes..............................................................................................................................12 Hash lookups..........................................................................................................12 Changing hash values ............................................................................................12 Adding hash pairs ..................................................................................................13 Hash size ................................................................................................................13 Interpolation...........................................................................................................13 Special Variables .............................................................................................................13 $_............................................................................................................................13 @ARGV ................................................................................................................13 %ENV....................................................................................................................13 Conditionals and truth...............................................................................................................14 Comparison operators......................................................................................................14 Boolean operators............................................................................................................15 if-elsif-else.......................................................................................................................15 unless......................................................................................................................15 Perl Training Australia (http://perltraining.com.au/) iii Trailing conditionals ..............................................................................................15 Looping constructs....................................................................................................................16 while ................................................................................................................................16 foreach.............................................................................................................................16 Subroutines................................................................................................................................17 File I/O ......................................................................................................................................18 Reading............................................................................................................................19 Changing the input record separator......................................................................19 Writing.............................................................................................................................20 CPAN ........................................................................................................................................20 autodie.......................................................................................................................................21 Chapter summary ......................................................................................................................22 5. Regular expressions ......................................................................................................................23 In this chapter............................................................................................................................23 What are regular expressions?...................................................................................................23 Regular expression operators and functions..............................................................................23 m/PATTERN/ - the match operator .................................................................................23 s/PATTERN/REPLACEMENT/ - the substitution operator............................................24
Recommended publications
  • Advancing Perl Supporting Community
    Advancing Perl Supporting Community 2012 Year End Report Board of Directors Nathan Torkington Chairman Karen Pauley President Jim Brandt Secretary Dan Wright Treasurer Kurt DeMaagd Curtis “Ovid” Poe Allison Randal Kevin Lenzo Director Emeritus Committee Chairs Alberto Simões Grants Heath Bair Conferences Mark Keating Marketing Ya’akov Sloman Community Advocacy Karen Pauley Steering The Perl Foundation 340 S Lemon Ave #6055 Walnut, CA 91789 The Perl Foundation is a business alias for The Yet Another Society, a 501-c-3 charitable organization, incorporated in the state of Michigan. A Look Inside: TPF Inside: A Look President’s Message This has been a great year for The Perl Foundation. Thanks to the generosity of our donors and corporate partners, the commitment of our volunteers, and the vitality and energy of our community, we have been able to continue in our mission to advance the Perl programming language. As you know, TPF depends on donations, both of time and money, to operate. These donations have made it possible for us to provide financial support to key developers of Perl 5 and Perl 6, to continue our efforts in protecting our trademark, and to support many community programs. One of the pillars of Perl is its community. We recently launched an initiative, the Community Advocacy Committee, targeting the growth and health of the Perl community. With the help of this committee we plan to not only improve communication within our own community but to expand our links with other F/OSS communities. This year has been one pointing to a great future for Perl and those who use it.
    [Show full text]
  • Perlmonks.Com with a Gaim Plug-In SEEKING WISDOM
    PROGRAMMING Perl: A Gaim Plugin Get the news from perlmonks.com with a Gaim plug-in SEEKING WISDOM irst-time visitors to perlmonks. The Gaim project offers an instant messenger client that speaks a large com are rubbing their eyes in dis- Fbelief: High-caliber Perl hackers number of protocols. We’ll show you how to extend Gaim with Perl are jumping to answer even the simplest of newbie questions. The reason for this plugins. BY MICHAEL SCHILLI is that the community assigns XP (expe- rience) points for the best replies. And the more XP you have, the higher you answer a question correctly typically However, it can take a few seconds to climb in the ranking, from a novice, to a gets the most XP. Instead of pulling the download the content of a remote web monk, and slowly to expert status. web page with the latest questions time page. Both DNS name resolution and the and time again, it makes sense to script process of retrieving the content of the Best of Class the process and have the script let you requested web page can take some time, Due to the community dynamics on know when a new query arrives. during which the CPU should return to perlmonks.com, the The pmwatcher.pl script described other tasks. The tried-and-trusted POE first person to in this issue fetches the perlmonks. [3] framework provides exactly what we com page with the Newest Nodes at need. The POE kernel runs a single pro- regular intervals, remembering cess (and only a single thread), but uses older entries and sending out an cooperative multitasking between con- instant message when it discovers current tasks to ensure that each one is new postings.
    [Show full text]
  • The Perl Review Perl Mongers News 5 Perl Foundation News 5 Perlwar
    The Perl Review 2.1 The Perl Review Volume 2, Issue 1 Winter 2005 Perl Mongers News 5 Editor / Publisher: brian d foy Perl Foundation News 5 Design: Eric Maki PerlWar 6 Columnists: David H. Adler Andy Lester The Seven Sins of Alberto Simões Perl OO Programming 10 Copy Editors: Mike Fragassi Perl News 16 Thomas Mackenzie Haskell for Perlers 18 www.theperlreview.com [email protected] Hash Anti-Patterns 26 The Perl Review Book Review 29 5250 N. Broadway Suite 157 Chicago, IL, 60640 Book Review 30 The Perl Review (ISSN 1553-667X) is published quarterly by brian d foy. Publication Office: 5301 N. Kenmore Ave #2, Chicago, IL 60640. US subscriber rate is $16 per year (4 issues). Foreign subscriber rate is $30 US per year (4 issues). Single copies are $5 in the US, $8 elsewhere. Postmaster: Send address changes to The Perl Review, 5250 N. Broadway Suite 157, Chicago, IL, 60640. Subscribers: Subscribe online or send a check or money order drawn in US funds to the above address. Advertisers: Send email to [email protected] for rates and information. On the Cover Long before people had computers, they'd sit at home and stitch their programs into cloth. It was a simpler time when Copyright © 2005 The Perl Review people were more careful with their code (always using All rights reserved. Individual articles may strictures) since the code was much harder to fix once they be available under other licenses. had finished the program. Programmers faced other difficulties, such as running out of the right color thread for their syntax Printed in Chicago, IL, USA.
    [Show full text]
  • Pragmaticperl-Interviews-A4.Pdf
    Pragmatic Perl Interviews pragmaticperl.com 2013—2015 Editor and interviewer: Viacheslav Tykhanovskyi Covers: Marko Ivanyk Revision: 2018-03-02 11:22 © Pragmatic Perl Contents 1 Preface .......................................... 1 2 Alexis Sukrieh (April 2013) ............................... 2 3 Sawyer X (May 2013) .................................. 10 4 Stevan Little (September 2013) ............................. 17 5 chromatic (October 2013) ................................ 22 6 Marc Lehmann (November 2013) ............................ 29 7 Tokuhiro Matsuno (January 2014) ........................... 46 8 Randal Schwartz (February 2014) ........................... 53 9 Christian Walde (May 2014) .............................. 56 10 Florian Ragwitz (rafl) (June 2014) ........................... 62 11 Curtis “Ovid” Poe (September 2014) .......................... 70 12 Leon Timmermans (October 2014) ........................... 77 13 Olaf Alders (December 2014) .............................. 81 14 Ricardo Signes (January 2015) ............................. 87 15 Neil Bowers (February 2015) .............................. 94 16 Renée Bäcker (June 2015) ................................ 102 17 David Golden (July 2015) ................................ 109 18 Philippe Bruhat (Book) (August 2015) . 115 19 Author .......................................... 123 i Preface 1 Preface Hello there! You have downloaded a compilation of interviews done with Perl pro- grammers in Pragmatic Perl journal from 2013 to 2015. Since the journal itself is in Russian
    [Show full text]
  • Compiling Your Own Perl
    APPENDIX A Compiling Your Own Perl Compiling Perl on a Unix-like system is simple. First, obtain the source for Perl from CPAN (dppl6++_l]j*lanh*knc+on_+NA=@IA*dpih). Then input the following sequence of commands: p]nvtrblanh)1*4*4*p]n*cv _`lanh)1*4*4 od?kjbecqna)`ao i]ga i]gapaop oq`ki]gaejop]hh On most Unix systems, this code will result in your lanh being installed into the +qon+ hk_]h+ directory tree. If you want it installed elsewhere—for example, in the local directory in your home directory—then replace od?kjbecqna)`a with the following: od?kjbecqna)`ao)@lnabet9z+hk_]h+ which should enable you to install Perl on your computer without root access. Note that the )`ao flag uses all the default options for compiling Perl. If you know that you want nonstandard configuration, just use the flag )`a instead to be prompted for your requirements. Be aware that the source for Perl 5.10.0 requires a patch to work properly with Catalyst. This is fixed in subsequent versions of Perl 5.10. If you need to test code guaranteed to run on a wide range of systems, you should con- sider using Perl version 5.8.7. Perl versions greater than 5.8.7 contain features that were not available in earlier versions of Perl, so Perl 5.8.7 is feature complete for all versions of Perl that Catalyst will run on (version 5.8.1 and later). Put another way, versions 5.8.8 and later have new features that you can’t rely on in earlier releases.
    [Show full text]
  • Modern Perl, Fourth Edition
    Prepared exclusively for none ofyourbusiness Prepared exclusively for none ofyourbusiness Early Praise for Modern Perl, Fourth Edition A dozen years ago I was sure I knew what Perl looked like: unreadable and obscure. chromatic showed me beautiful, structured expressive code then. He’s the right guy to teach Modern Perl. He was writing it before it existed. ➤ Daniel Steinberg President, DimSumThinking, Inc. A tour de force of idiomatic code, Modern Perl teaches you not just “how” but also “why.” ➤ David Farrell Editor, PerlTricks.com If I had to pick a single book to teach Perl 5, this is the one I’d choose. As I read it, I was reminded of the first time I read K&R. It will teach everything that one needs to know to write Perl 5 well. ➤ David Golden Member, Perl 5 Porters, Autopragmatic, LLC I’m about to teach a new hire Perl using the first edition of Modern Perl. I’d much rather use the updated copy! ➤ Belden Lyman Principal Software Engineer, MediaMath It’s not the Perl book you deserve. It’s the Perl book you need. ➤ Gizmo Mathboy Co-founder, Greater Lafayette Open Source Symposium (GLOSSY) Prepared exclusively for none ofyourbusiness We've left this page blank to make the page numbers the same in the electronic and paper books. We tried just leaving it out, but then people wrote us to ask about the missing pages. Anyway, Eddy the Gerbil wanted to say “hello.” Prepared exclusively for none ofyourbusiness Modern Perl, Fourth Edition chromatic The Pragmatic Bookshelf Dallas, Texas • Raleigh, North Carolina Prepared exclusively for none ofyourbusiness Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks.
    [Show full text]
  • Name Synopsis
    Perl version 5.10.0 documentation - perl NAME perl - Practical Extraction and Report Language SYNOPSIS perl [ -sTtuUWX ] [ -hv ] [ -V[:configvar] ] [ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ] [ -pna ] [ -F pattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ] [ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ] [ -C [ number/list] ] [ -P ] [ -S ] [ -x[dir] ] [ -i[extension] ] [ -e 'command' ] [ -- ] [ programfile ] [ argument ]... If you're new to Perl, you should start with perlintro, which is a general intro for beginners and provides some background to help younavigate the rest of Perl's extensive documentation. For ease of access, the Perl manual has been split up into several sections. Overview perlPerl overview (this section) perlintroPerl introduction for beginners perltocPerl documentation table of contents Tutorials perlreftutPerl references short introduction perldscPerl data structures intro perllolPerl data structures: arrays of arrays perlrequick Perl regular expressions quick start perlretutPerl regular expressions tutorial perlbootPerl OO tutorial for beginners perltootPerl OO tutorial, part 1 perltoocPerl OO tutorial, part 2 perlbotPerl OO tricks and examples perlstylePerl style guide perlcheatPerl cheat sheet perltrapPerl traps for the unwary perldebtutPerl debugging tutorial perlfaqPerl frequently asked questions perlfaq1General Questions About Perl perlfaq2Obtaining and Learning about Perl perlfaq3Programming Tools perlfaq4Data Manipulation perlfaq5Files and Formats perlfaq6Regexes perlfaq7Perl Language Issues perlfaq8System
    [Show full text]
  • Module Kwalitee YAPC Europe 2007
    Module Kwalitee YAPC Europe 2007 v2.0 (translated, edited & augmented from French Perl Workshop 2006 talk) YAPC 2007, Vienna, August 28th–30th, 1 Xavier Caron <[email protected]> Module Kwalitee “Kwalitee”? ✗ Definition attempt ✗ “Kwalitee” is an approximation of “Quality” ✗ Nobody knows what it is actually... ✗ Anyway, we believe we're able to recognize it when we see it! ✗ It's mainly a matter of confidence ✗ Built through passed tests (but it's not enough as we'll see later) ✗ Yet, absence of bugs (read “unfound”) does not imply Kwalitee! ✗ Although a correlation exists if tests functional coverage is decent ✗ “Go ahead bug, make my day!” ✗ A bug is a difference between expectation and implementation ✗ It is also a difference between test, documentation & code ✗ If documentation is missing, this is a bug indeed! YAPC 2007, Vienna, August 28th–30th, 2 Xavier Caron <[email protected]> Module Kwalitee Achtung! * Tr ** Tr u (i th u n i th c s, lu is N d th in er O g t e T h i out i s s no t on h e)**tr er u e! th . YAPC 2007, Vienna, August 28th–30th, 3 Xavier Caron <[email protected]> Module Kwalitee When & What 1 ✗ Ages before ✗ Literature ✗ CPAN ✗ Articles, conferences, /Perl Mon(k|ger)s/, etc. ✗ “Read. Learn. Evolve.” – Klortho the Magnificent ✗ Before ✗ Generate module skeleton ✗ Use an OO class builder (if applicable) ✗ Write tests (a tad of XP in your code) ✗ While (coding) ✗ Document in parallel (and why not, before?) ✗ Add more tests if required YAPC 2007, Vienna, August 28th–30th, 4 Xavier Caron <[email protected]> Module Kwalitee When & What 2 ✗ After (between coding & release) ✗ Test (test suite – acceptance and non-regression) ✗ Measure POD coverage ✗ Measure tests code coverage ✗ Measure tests functional coverage (Ha! Ha!) ✗ Generate synthetic reports ✗ For one-glance checking purposes or for traceability's sake ✗ Way after (release) ✗ Refactor early, refactor often ✗ Test suite (non-regression) should ensure nothing got broken in the process ✗ Following a bug report..
    [Show full text]
  • Snort for Dummies.Pdf
    01_568353 ffirs.qxd 6/3/04 10:07 AM Page i Snort ™ FOR DUMmIES‰ 01_568353 ffirs.qxd 6/3/04 10:07 AM Page ii 01_568353 ffirs.qxd 6/3/04 10:07 AM Page iii Snort ™ FOR DUMmIES‰ by Charlie Scott, Paul Wolfe, and Bert Hayes 01_568353 ffirs.qxd 6/3/04 10:07 AM Page iv Snort™ For Dummies® Published by Wiley Publishing, Inc. 111 River Street Hoboken, NJ 07030-5774 Copyright © 2004 by Wiley Publishing, Inc., Indianapolis, Indiana Published by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permis- sion of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Legal Department, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4355, e-mail: brandreview@ wiley.com. Trademarks: Wiley, the Wiley Publishing logo, For Dummies, the Dummies Man logo, A Reference for the Rest of Us!, The Dummies Way, Dummies Daily, The Fun and Easy Way, Dummies.com, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates in the United States and other countries, and may not be used without written permission.
    [Show full text]
  • SPEC CPU2006 Benchmark Descriptions
    SPEC CPU2006 Benchmark Descriptions Descriptions written by the SPEC CPU Subcommittee and by the original program authors [1]. Edited by John L. Henning, Secretary, SPEC CPU Subcommittee, and Performance Engineer, Sun Microsystems. Contact [email protected] Introduction tions, rather than using artificial loop kernels or synthetic benchmarks. Therefore, the most important parts of the new On August 24, 2006, the Standard Performance Evalua- suite are the benchmarks themselves, which are described on tion Corporation (SPEC) announced CPU2006 [2], which re- the pages that follow. In a future issue of Computer Architec- places CPU2000. The SPEC CPU benchmarks are widely used ture News, information will be provided about other aspects of in both industry and academia [3]. the new suite, including additional technical detail regarding The new suite is much larger than the previous, and will benchmark behavior and profiles. exercise new corners of CPUs, memory systems, and compil- ers – especially C++ compilers. Where CPU2000 had only 1 References: benchmark in C++, the new suite has 7, including one with ½ [1] Program authors are listed in the descriptions below, million lines of C++ code. As in previous CPU suites, Fortran which are adapted from longer versions posted at and C are also well represented. www.spec.org/cpu2006/Docs/. The SPEC project leaders Since its beginning, SPEC has claimed the motto that are listed in credits.html at the same location. [2] SPEC’s press announcement may be found at “An ounce of honest data www.spec.org/cpu2006/press/release.html is worth a pound of marketing hype”. [3] SPEC’s website has over 6000 published results for CPU2000, at www.spec.org/cpu2000/results.
    [Show full text]
  • Beginning Perl
    ffirs.indd ii 8/9/12 2:02 PM BEGINNING PERL INTRODUCTION . xxiii CHAPTER 1 What Is Perl? . .1 CHAPTER 2 Understanding the CPAN . 25 CHAPTER 3 Variables . .41 CHAPTER 4 Working with Data . 83 CHAPTER 5 Control Flow . 125 CHAPTER 6 References . 157 CHAPTER 7 Subroutines . 175 CHAPTER 8 Regular Expressions . 219 CHAPTER 9 Files and Directories . 249 CHAPTER 10 sort, map, and grep . 287 CHAPTER 11 Packages and Modules . 315 CHAPTER 12 Object Oriented Perl . 353 CHAPTER 13 Moose . 399 CHAPTER 14 Testing . 439 CHAPTER 15 The Interwebs . 481 CHAPTER 16 Databases . 523 CHAPTER 17 Plays Well with Others. 545 CHAPTER 18 Common Tasks . 567 CHAPTER 19 The Next Steps . .611 APPENDIX Answers to Exercises . 655 INDEX . 695 ffirs.indd i 8/9/12 2:02 PM ffirs.indd ii 8/9/12 2:02 PM BEGINNING Perl ffirs.indd iii 8/9/12 2:02 PM ffirs.indd iv 8/9/12 2:02 PM BEGINNING Perl Curtis “Ovid” Poe John Wiley & Sons, Inc. ffirs.indd v 8/9/12 2:02 PM Beginning Perl Published by John Wiley & Sons, Inc. 10475 Crosspoint Boulevard Indianapolis, IN 46256 w w w.wiley.com Copyright © 2012 by John Wiley & Sons, Inc., Indianapolis, Indiana Published simultaneously in Canada ISBN: 978-1-118-01384-7 ISBN: 978-1-118-22187-7 (ebk) ISBN: 978-1-118-23563-8 (ebk) ISBN: 978-1-118-26051-7 (ebk) Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1 No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600.
    [Show full text]
  • Introduction to Perl
    Introduction to Perl December 2019 Document reference: 3169-2019 #!/usr/local/bin/perl # # Find all the images that have been downloaded, and how often. # Store in a nested hash: filename -> size -> count use strict; use Data::Dumper; my %downloads; # Predeclare the hash while (<>) { next unless /Download/; # ignore everything thats not a download next if /imageBar/; # ignore downloads for the imageBar m!/hulton/(\w+?)/(.+\.jpg)!; # get the directory (size) and filename # If the filename doesn't exist, we need to create it. $downloads{$2} = {} unless defined $downloads{$2} $downloads{$2}->{$1}++; # increment filename -> size by one } $Data::Dumper::Indent = 3; # Define the padding for the output $Data::Dumper::Sortkeys = "true"; # Sort keys (default ASCII sort) print Dumper( \%downloads ); # display the gathered data 2019 Slide 1 of 70 Practical Extraction and Report Language ● Language for easy manipulation of ● text ● files ● processes ● Version 1.000 was released in 1987, version 5 came out in 1994. ● Unicode came in 2000, with Perl 5.6 ● Perl now release a major stable version upgrade annually (5.30.0 in 2019) ● Perl 6 started development in Summer 2005. ● NOT backward compatible ● OO and typed ● Released Christmas 2015 ● Officially renamed Raku in October 2019 2019 Slide 2 of 70 Overview ● Avoids inbuilt limits - uses full virtual memory ● Many defaults - does what you want ● Easy to do from the command prompt perl -e 'print "hello world\n"' ● Easy to do simple scripts #!/usr/local/bin/perl # a hello world script print “hello world\n”;
    [Show full text]