"How often are new versions of Perl released?" in perlfaq1

How often are new versions of Perl released? ... Recently, the plan has been to release a new version of Perl roughly every April, but getting the release

"How do I substitute case-insensitively on the LHS while preserving case on the RHS?" in perlfaq6

uc $new | (uc $1 ^ $1) . ... # finish up with any remaining new (for when new is longer than old) if ($newlen > $oldlen) {

"How can I reliably rename a file?" in perlfaq5

) or system("mv", $old, $new); It may be more portable to use the File::Copy module instead. ... You just copy to the new file to the new name (checking return values), then delete the old one.

"How do I merge two hashes?" in perlfaq4

If you want to preserve the original hashes, copy one hash (%hash1) to a new hash (%new_hash), then add ... don't want to create a new hash, you can still use this looping technique; just change the %new_hash

"How can I split a [character]-delimited string except when inside [character]?" in perlfaq4

He suggests (assuming your string is contained in $text): my @new = (); push(@new, $+) while ... | , }gx; push(@new, undef) if substr($text,-1,1) eq ','; If you want to represent quotation

"What's the difference between dynamic and lexical (static) scoping? Between local() and my()?" in perlfaq7

local($x) saves away the old value of the global variable $x and assigns a new value for the duration ... my($x) creates a new variable that is only visible in the current subroutine.

"How can I copy a file?" in perlfaq5

use File::Copy; copy( $original, $new_copy ) or die "Copy failed: $!" ... You also have to remember to copy the permissions, owner, and group to the new file.

"How do I read email?" in perlfaq9

Use the Email::Folder module, like so: use Email::Folder; my $folder = Email::Folder->new('/path ... Simple objects, but we want # Email::MIME objects as they're more robust my $mime = Email::MIME->new

"How can I comment out a large block of Perl code?" in perlfaq7

You have to put these directives at the beginning of the line and somewhere where Perl expects a new ... You end the comment with =cut, ending the Pod section: =pod my $object = NotGonnaHappen->new

"What's wrong with always quoting "$vars"?" in perlfaq4

Think of it this way: double-quote expansion is used to produce new strings. ... If you get used to writing odd things like these: print "$var"; # BAD my $new = "$old"

"How do I parse a mail header?" in perlfaq9

use Email::MIME; my $message = Email::MIME->new($rfc2822); my $subject = $message->header('Subject ... Abstract and then using its cast method to get an Email::MIME object: my $abstract = Email::Abstract->new

"How do I convert between numeric representations/bases/radixes?" in perlfaq4

("H*", pack("N", 3735928559)); Using Bit::Vector: use Bit::Vector; my $vec = Bit::Vector->new_Dec ... Using Bit::Vector: my $vec = Bit::Vector->new_Bin(32, "11011110101011011011111011101111"); my

"How do I change, delete, or insert a line in a file, or append to the beginning of a file?" in perlfaq5

; open my $out, '>', "$" or die "Can't write new file: $!" ... open my $out, '>', "$" or die "Can't write new file: $!"

"How do I shuffle an array randomly?" in perlfaq4

work using splice, randomly picking another element to swap the current element with srand; @new ... = (); @old = 1 .. 10; # just a demo while (@old) { push(@new, splice(@old, rand @old

"Can I use perl to run a telnet or ftp session?" in perlfaq8

handshaking, then the standard dual-process approach will suffice: use IO::Socket; # new ... in 5.004 my $handle = IO::Socket::INET->new('') or die "can't connect to

"How do I automate an HTML form submission?" in perlfaq9

using the www_form_urlencode method from HTTP::Tiny: use HTTP::Tiny; my $ua = HTTP::Tiny->new ... use HTTP::Tiny; my $ua = HTTP::Tiny->new; my $url = ''; my $

"Do I need to recompile XS modules when there is a change in the C library?" in perlfaq7

(contributed by Alex Beamish) If the new version of the C library is ABI-compatible (that's Application

"What is variable suicide and how can I prevent it?" in perlfaq7

foobarbar foobarbarbar Finally foo The $f that has "bar" added to it three times should be a new ... $f my $f should create a new lexical variable each time through the loop.

"Which Perl blogs should I read?" in perlfaq2

Perl News covers some of the major events in the Perl world, Perl Weekly is a weekly e-mail (and RSS

"How can I use a reference as a hash key?" in perlfaq4

This will mean a new variable might accidentally be associated with the value for an old. ... handle renaming the keys if you use multiple threads (which causes all variables to be reallocated at new

"How stable is Perl?" in perlfaq1

Production releases, which incorporate bug fixes and new functionality, are widely tested before release

"How do I make a temporary file name?" in perlfaq5

If you don't have a modern enough Perl installed, use the new_tmpfile class method from the IO::File ... () or die "Unable to make new temporary file: $!"

"How do I modify the shadow password file on a Unix system?" in perlfaq8

To change the file, make a new shadow password file (the format varies from system to system--see passwd

"How do I declare/create a structure?" in perlfaq7

Here's an example: $person = {}; # new anonymous hash $person->{AGE} = 24

"How do I redefine a builtin function, operator, or method?" in perlfaq7

:-) If you want to override a predefined function, such as open(), then you'll have to import the new

"Where can I get perl-mode or cperl-mode for emacs?" in perlfaq3

You are probably using "main::foo" in new Perl code anyway, so this shouldn't be an issue.

"How do I delete the last N lines from a file?" in perlfaq5

lines in the file then start at the beginning and print the number of lines (minus the last N) to a new ... ; my $filename = 'test.txt'; my $Lines_to_truncate = 2; my $bw = File::ReadBackwards->new

"Does Perl have anything like Ruby's #{} or Python's f string?" in perlfaq4

a', 1, 'B', 3 ); # Print the current date and time and then Tommorrow my $t = Time::Piece->new ... ; say "Now is: ${\ $t->cdate() }"; say "Tomorrow: ${\ do{ my $T=Time::Piece->new + ONE_DAY ;

"How do I fetch an HTML file?" in perlfaq9

resources and give their content back to you as a string: use HTTP::Tiny; my $ua = HTTP::Tiny->new

"How can I use Perl's -i option from within a program?" in perlfaq5

all the .c files in the current directory, leaving a backup of the original data from each file in a new

"How do I handle circular lists?" in perlfaq4

circular arrays: use Array::Iterator::Circular; my $color_iterator = Array::Iterator::Circular->new

"How do I remove consecutive pairs of characters?" in perlfaq4

itself my $str = 'Haarlem'; # in the Netherlands $str =~ tr///cs; # Now Harlem, like in New

"Can I use Perl regular expressions to match balanced text?" in perlfaq6

First, adding the new possessive + to any quantifier finds the longest match and does not backtrack. ... Second, the new (?PARNO) refers to the sub-pattern in the particular capture group given by PARNO.

"How come when I open a file read-write it wipes it out?" in perlfaq5

; To open file for writing, create new file if needed or else truncate old file: open my $fh, ' ... ; To open file for writing, create new file, file must not exist: sysopen my $fh, $path, O_WRONLY

"Where do I get the include files to do ioctl() or syscall()?" in perlfaq8

MakeMaker for more information (in brief, just use make perl instead of a plain make to rebuild perl with a new

"How do I clear the screen?" in perlfaq8

filehandle you want to affect, call the Cls method: Win32::Console; my $OUT = Win32::Console->new

"I put a regular expression into $/ but it didn't work. What's wrong?" in perlfaq6

use File::Stream; my $stream = File::Stream->new( $filehandle, separator => qr/\

"How can I capture STDERR from an external command?" in perlfaq8

temp files: use IPC::Open3; use IO::File; my $in = ''; local *CATCHOUT = IO::File->new_tmpfile ... ; local *CATCHERR = IO::File->new_tmpfile; my $pid = open3($in, ">&CATCHOUT", ">&CATCHERR", "

"How can I convince others to use Perl?" in perlfaq1

If Perl is new (and thus scary) to them, find something that Perl can do to solve one of their problems

"How can I use a filehandle indirectly?" in perlfaq5

bless-able) $fh = *SOME_FH{IO}; # blessed IO::Handle from *SOME_FH typeglob Or, you can use the new ... use IO::Handle; # 5.004 or higher my $fh = IO::Handle->new(); Then use any of

"Which version of Perl should I use?" in perlfaq1

If things aren't broken, upgrading perl may break them (or at least issue new warnings).

"How do I profile my Perl programs?" in perlfaq3

The Devel::NYTProf (New York Times Profiler) does both statement and subroutine profiling.

"How can I lock a file?" in perlfaq5

For more information on file locking, see also "File Locking" in perlopentut if you have it (new for

"How can I read a single character from a file? From the keyboard?" in perlfaq5

echo, $noecho, $fd_stdin); my $fd_stdin = fileno(STDIN); $term = POSIX::Termios->new

"How do I do (anything)?" in perlfaq3

Cookbook Modules perlmod - Perl modules (packages and symbol tables) perlmodlib - constructing new

"How do I find which modules are installed on my system?" in perlfaq3

use ExtUtils::Installed; my $inst = ExtUtils::Installed->new(); my @modules = $inst->modules

"How do I permute N elements of a list?" in perlfaq4

d'; my $p_iterator = Algorithm::Permute->new ( \@array ); while (my @perm = $p_iterator->next

"How do I find yesterday's date?" in perlfaq4

localtime() - ONE_DAY; # WRONG print "Yesterday was $yesterday\n"; The Time::Piece module exports a new

"How do I read just one key without waiting for a return key?" in perlfaq8

$oterm, $echo, $noecho, $fd_stdin); $fd_stdin = fileno(STDIN); $term = POSIX::Termios->new

"How do I pad a string with blanks or pad a number with zeroes?" in perlfaq4

Left and right padding with any character, creating a new string: my $padded = $pad_char x ( $pad_len

"How do I manipulate arrays of bits?" in perlfaq4

. $+[0] * 8; } Or use the CPAN module Bit::Vector: my $vector = Bit::Vector->new($num_of_bits