Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

bichonfrise74's scratchpad

by bichonfrise74 (Vicar)
on Oct 18, 2008 at 21:48 UTC ( #717987=scratchpad: print w/ replies, xml ) Need Help??

Dereferencing Syntax


Direct

Using References

Syntax 1

Syntax 2

array

element

$a[0]

${$ar}[0]

$ar->[0]

slice

@a [0,1,2]

@{$ar}[0,1,2]

unindexed

@a

@{$ar}

last index

$#a

$#{$ar}

hash

element

$h{'a'}

${$hr}{'a'}

$hr->{'a'}

slice

@h{'a', 'b', 'c'}

@{$hr}{'a', 'b', 'c'}

unindexed

%h

%{$hr}

code

call

func(@args)

&{$cr}(@args)

$cr->(@args)


* The curly brackets around $ar, $hr and $cr are optional.

I got this from the scratchpad of ikegami which I think is really useful.

Regex Summary

Metacharacter

Meaning

[abc]

Any one of a, b, or c.

[abc]

Anything other than a, b, and c.

\d \D

A digit; a non-digit.

\w \W

A 'word' character; a non-'word' character.

\s \S

A whitespace character; a non-whitespace character.

\b

The boundary between a \w character and a \W character

.

Any single character (apart from a new line).

(abc)

The phrase 'abc' as a group.

?

Preceding character or group may be present 0 or 1 times.

+

Preceding character or group is present 1 or more times.

*

Preceding character or group may be present 0 or more times.

{x,y}

Preceding character or group is present between x and y times.

{,y}

Preceding character or group is present at most y times.

{x,}

Preceding character or group is present at least x times.

{x}

Preceding character or group is present x times.

Non-greediness For Quantifiers

Syntax: (pattern)+?

(pattern)*?

The metacharacters + and * are greedy by default and will try to match as much as possible of the referenced string (while still achieving a full pattern match). This 'greedy' behavior can be turned off by placing a ? immediately after the respective metacharacter. A non-greedy match finds the minimum number of characters matching the pattern.

Grouping and Alternation

| For Alternation

Syntax: pattern1|pattern2

By separating two patterns with |, we can specify that a match on one or the other should be attempted.

() For Grouping And Backreferences ('Capturing')

Syntax: (pattern)

This will group elements in pattern. If those elements are matched, a backreference is made to one of the numeric special variables ($1, $2, $3 etc.)

 (?:) For Non-backreferenced Grouping ('Clustering')

Syntax: (?:pattern)

This will group elements in pattern without making backreferences.

Lookahead/behind Assertions

 (?=) For Positive Lookahead

Syntax: pattern1(?=pattern2)

This lets us look for a match on 'pattern1 followed by pattern2', without backreferencing pattern2.

(?!) For Negative Lookahead

Syntax: pattern1(?!pattern2)

This lets us look for a match on 'pattern1 not followed by pattern2', without backreferencing pattern2.

(?<=) For Positive Lookbehind

Syntax: pattern1(?<=pattern2)

This lets us look for a match on 'pattern1 preceded by pattern2', without backreferencing pattern2. This only works if pattern2 is of fixed width.

(?<!) For Negative Lookbehind

Syntax: pattern1(?<!pattern2)

This lets us look for a match on 'pattern1 not preceded by pattern2', without backreferencing pattern2. This only works if pattern2 is of fixed width.

Backreference Variables

Variable

Description

\num (num = 1, 2, 3…)

Within a regular expression, \num returns the substring that was matched with the numth grouped pattern in that regexp.

$num (num = 1, 2, 3…)

Outside a regular expression, $num returns the substring that was matched with the numth grouped pattern in that regexp.

$+

This returns the substring matched with the last grouped pattern in a regexp.

$&

This returns the string that matched the whole regexp – this will include portions of the string that matched (?:) groups, which are otherwise not backreferenced.

$`

This returns everything preceding the matched string in $&.

$'

This returns everything following the matched string in $&.

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2014-08-20 22:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (124 votes), past polls