Perl 6
Perl 6 Variable Tablet: Revision 103

Overview - Chapter: 0:History, 1:Design, 2:Basics, 3:Var, 4:Op, 5:IO, 6:{}, 7:Sub, 8:OOP, 9:Rx, 10:Meta
Intro - Appendices: A:Index, B:Tables, C:Cook, D:Delta, E:Best of, F:Links




Herbert Breunung: Inside a shell might be a Perl.

This tablet is about the core stuff of Perl's genesis - reading and writing files, running commands, and gluing parts of the operating environment together in new ways.

Interacting with the Terminal

The command terminal (STDOUT to Perl 5 programmer, and $*OUT in Perl 6) is the primary communication device for a script with its user. Most tutorials begin with writing a line to that black window.

say

say 'Dear Earthlings!';

Write text to the standard output ($*OUT, called STDOUT in Perl 5). This example just prints a string literal, but any type of value is allowed. say adds a line ending, according to the operating system convention. So every time you "say" something, it will start on a fresh line.

You can also give say a list of values. Each item will be taken as an expression, that has to evaluated. The results will be combined, just like with ~, and finally the line ending will be added.

say 'Dear Earthlings, we come from ', $our_home_planet, ', which is ', compute_distance($earth, $our_home_planet), ' parsecs away.';

But normally this would be written using double-quoted strings, like:

say "Dear Earthlings, we come from $our_home_planet, which is { compute_distance($earth, $our_home_planet) } parsecs away.";

print

Like say, just without adding the line ending. Remember it like this: machines print explicitly, character by character without pauses. People, on the other hand, speak in sentences or speech balloons, which have to be separated.

printf

It's a print that understands also the syntax of sprintf. It's a very lightweight framework for formated output. If you need more, use formats or even a template engine.

my $num = 22/7;
printf "Even on $our_home_planet, the ratio of a circle's circumference to its diameter is approximately %0.3f\n", $num;

note

Works like say, but writes to $*ERR (known as STDERR in Perl 5). Content sent to $*ERR can be redirected separately from normal program output, and is often used for progress reports, extra debugging information, error messages, etc.

warn

Behaves somewhat like print to $*ERR (see note). Under the hood, warn is a "resumable exception", and its message can be caught and handled farther up the call stack in some way. Normally, once it's handled, Perl will resume running the code just after the warn call.

get

Reads one line of input from $*IN (called STDIN in Perl 5), and strips the line ending. So unlike in Perl 5, you don't have to chomp input. All following line-oriented commands (e.g., prompt, lines) behave that way.

prompt

Performs two-way communication with the terminal. It does an output like print, followed by a read like get.

given prompt "Enter geosynchronous orbit (y/N)? " {
    when / :i ^ y / { say "Warning, merging into geosync layer." }
    default         { say "Good, staying out of traffic." }
}

getc

Reads one character (may be more than one byte) from $*IN. Don't try using this to read key-by-key interactively.

Files

:X

file test operators

slurp

Reads the entire contents of a file as a single string.

my $contents = slurp 'filename.txt';

lines

open

read for files

say for files

open

Synopsis:

open('new', :w).close

given open('foo', :w) { # "Anonymous" filehandle
.say('Hello, world!');
.close
}

Valid modes are:

r : read

w : write

a : append (Note: you must specify "wa", not just "a")

p : pipe

close

rename for files

Directories

$*CWD

dir

mkdir

chdir

chroot

rmdir

rename

Sockets

Processes

run

runinstead

fork

wait

kill


Overview - Chapter: 0:History, 1:Design, 2:Basics, 3:Var, 4:Op, 5:IO, 6:{}, 7:Sub, 8:OOP, 9:Rx, 10:Meta
Intro - Appendices: A:Index, B:Tables, C:Cook, D:Delta, E:Best of, F:Links



Upload Files

Click "Browse" to find the file you want to upload. When you click "Upload file" your file will be uploaded and added to the list of attachments for this page.

Maximum file size: 50MB

 
 
 
File Name Author Date Uploaded Size

Save Page As

Enter a meaningful and distinctive title for your page.

Page Title:

Tip: You'll be able to find this page later by using the title you choose.

Page Already Exists

There is already a page named XXX. Would you like to:

Save with a different name:

Save the page with the name "XXX"

Append your text to the bottom of the existing page named: "XXX"

Upload Files

Click "Browse" to find the file you want to upload. When you click "Add file" this file will be added to the list of attachments for this page, and uploaded when you save the page.

 
 
 
Add Tags

Enter a tag and click "Add tag". The tag will be saved when you save the page.

Tag: 

Suggestions: