The Basics

Getting started with Perl for Bioinformatics programming

print "Welcome to the Wonderful World of Bioinformatics!\n";

Let's Get Started!

print "Welcome ";

print "to ";

print "the ";

print "Wonderful ";

print "World ";

print "of ";

print "Bioinformatics!";

print "\n";

Another version of welcome

Maxim 3.1

Programs execute in sequential order

Maxim 3.2

Less is better

Maxim 3.3

If you can say something with fewer words, then do so

$ perl -c welcome

welcome syntax OK

$ perl welcome

Running Perl programs

String found where operator expected at welcome line 3,

near "pint "Welcome to the Wonderful World of Bioinformatics!\n""

(Do you need to predeclare pint?)

syntax error at welcome line 3,

near "pint "Welcome to the Wonderful World of Bioinformatics!\n""

welcome had compilation errors.

Running Perl – Syntax Errors

print ; "Welcome to the Wonderful World of Bioinformatics!\n";

Syntax and semantics

$ perl whoops

$ perl -c -w whoops

Useless use of a constant in void context at whoops line 1.

whoops syntax OK

$ chmod u+x welcome3

#! /usr/bin/perl -w

$ ./welcome3

$ perl welcome3

Program: run thyself!

Maxim 3.4

There's more than one way to do it

Iteration

#! /usr/bin/perl -w

# The 'forever' program - a (Perl) program,

# which does not stop until someone presses Ctrl-C.

use constant TRUE => 1;

use constant FALSE => 0;

while ( TRUE )

{

print "Welcome to the Wonderful World of Bioinformatics!\n";

sleep 1;

}

Using the Perl while construct

$ chmod u+x forever

$ ./forever

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

.

.

Running forever ...

Maxim 3.5

Add comments to make future maintenance of a program easier for other programmers and for you

Maxim 3.6

When using constant values, refer to them with a nice, human-friendly name as opposed to the actual value

Maxim 3.7

Use blocks to group program statements together

More Iterations

Maxim 3.8

A condition can result in a value of true or false

Introducing variable containers

$name

$_address

$programming_101

$z

$abc

$count

Maxim 3.9

When you need to change the value of an item, use a variable container

Maxim 3.10

Don't be lazy: use good, descriptive names for variables

#! /usr/bin/perl -w

# The 'tentimes' program - a (Perl) program,

# which stops after ten iterations.

use constant HOWMANY => 10;

$count = 0;

while ( $count < HOWMANY )

{

print "Welcome to the Wonderful World of Bioinformatics!\n";

$count++;

}

Variable containers and loops

$ chmod u+x tentimes

$ ./tentimes

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Welcome to the Wonderful World of Bioinformatics!

Running tentimes ...

Selection

#! /usr/bin/perl -w

# The 'fivetimes' program - a (Perl) program,

# which stops after five iterations.

use constant TRUE => 1;

use constant FALSE => 0;

use constant HOWMANY => 5;

$count = 0;

while ( TRUE )

{

$count++;

print "Welcome to the Wonderful World of Bioinformatics!\n";

if ( $count == HOWMANY )

{

last;

}

}

Using the Perl if construct

#! /usr/bin/perl -w

# The 'oddeven' program - a (Perl) program,

# which iterates four times, printing 'odd' when $count

# is an odd number, and 'even' when $count is an even

# number.

use constant HOWMANY => 4;

$count = 0;

while ( $count < HOWMANY )

{

$count++;

if ( $count == 1 )

{

print "odd\n";

}

elsif ( $count == 2 )

{

print "even\n";

}

There Really Is MTOWTDI

elsif ( $count == 3 )

{

print "odd\n";

}

else # at this point $count is four.

{

print "even\n";

}

}

The oddeven program, cont.

#! /usr/bin/perl -w

# The 'terrible' program - a poorly formatted 'oddeven'.

use constant HOWMANY => 4; $count = 0;

while ( $count < HOWMANY ) { $count++;

if ( $count == 1 ) { print "odd\n"; } elsif ( $count == 2 )

{ print "even\n"; } elsif ( $count == 3 ) { print "odd\n"; }

else # at this point $count is four.

{ print "even\n"; } }

The terrible program

Maxim 3.11

Use plenty of whitespace, blank-lines and indentation to make your programs easier to read

#! /usr/bin/perl -w

# The 'oddeven2' program - another version of 'oddeven'.

use constant HOWMANY => 4;

$count = 0;

while ( $count < HOWMANY )

{

$count++;

if ( $count % 2 == 0 )

{

print "even\n";

}

else # $count % 2 is not zero.

{

print "odd\n";

}

}

The oddeven2 program

print 5 % 2, "\n"; # prints a '1' on a line.

print 4 % 2, "\n"; # prints a '0' on a line.

print 7 % 4, "\n"; # prints a '3' on a line.

Using the modulus operator

#! /usr/bin/perl -w

# The 'oddeven3' program - yet another version of 'oddeven'.

use constant HOWMANY => 4;

$count = 0;

while ( $count < HOWMANY )

{

$count++;

print "even\n" if ( $count % 2 == 0 );

print "odd\n" if ( $count % 2 != 0 );

}

The oddeven3 program

<>;

$line = <>;

#! /usr/bin/perl -w

# The 'getlines' program which processes lines.

while ( $line = <> )

{

print $line;

}

Processing Data Files

$ chmod u+x getlines

$ ./getlines

Running getlines ...

$ ./getlines terrible

$ ./getlines terrible welcome3

Asking getlines to do more

#! /usr/bin/perl -w

# The 'patterns' program - introducing regular expressions.

while ( $line = <> )

{

print $line if $line =~ /even/;

}

Introducing Patterns

$ ./patterns terrible

# The 'terrible' program - a poorly formatted 'oddeven'.

{ print "even\n"; } elsif ( $count == 3 ) { print "odd\n"; }

{ print "even\n"; } }

$ ./patterns oddeven

# The 'oddeven' program - a (Perl) program,

# is an odd number, and 'even' when $count is an even

print "even\n";

print "even\n";

Running patterns ...

Maxim 3.12

Patterns tell perl what to look for, not how to find it

Where To From Here

2004-04-02T16:51:44