Skip to Content
Computer Science & Perl Programming
book

Computer Science & Perl Programming

by Jon Orwant
November 2002
Intermediate to advanced
758 pages
19h 45m
English
O'Reilly Media, Inc.
Content preview from Computer Science & Perl Programming

Chapter 30. Seven Useful Uses of local

Mark Jason Dominus

In Scoping , I offered the advice “Always use my; never use local.” The most common use for both is to provide subroutines with private variables, and for this application you should always use my, and never local. But many readers (and TPJ’s tech editors) noted that localisn’t entirely useless; there are cases in which mydoesn’t work, or doesn’t do what you want. I promised a followup article on useful uses for local; here they are.

1. Special Variables

mymakes most uses of localobsolete. So it’s not surprising that the most common useful uses of local arise because of peculiar cases where my happens to be illegal.

The most important examples are the punctuation variables such as $", $/, $^W, and $_. Long ago, Larry Wall decided it would be too confusing if you could mythem; they’re exempt from the normal package scheme for the same reason. If you want to change them, but have the change apply to only part of the program, you’ll have to use local.

As an example of where this might be useful, let’s consider a function whose job is to read in an entire file and return its contents as a single string:

	sub getfile {

	    my $filename = shift;

	    open F, "< $filename" or die "Couldn't open `$filename': $!";

	    my $contents = '';

	    while (<F>) {

	        $contents .= $_;}

	    }

	    close F;

	    return $contents;

	}

This is inefficient, because the <F>operator makes Perl go to all the trouble of breaking the file into lines and returning them one at a time, and then ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Advanced Perl Programming

Advanced Perl Programming

Sriram Srinivasan
Perl Hacks

Perl Hacks

Chromatic, Damian Conway, Curtis Ovid Poe, Curtis (Ovid) Poe
Perl One-Liners

Perl One-Liners

Peteris Krumins

Publisher Resources

ISBN: 9780596003104Errata Page