ower_own_perl_wiki
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ower_own_perl_wiki [2007/09/25 21:38] – roumani | ower_own_perl_wiki [2008/09/29 03:02] (current) – cs243081 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Our Own Perl Wiki ====== | ====== Our Own Perl Wiki ====== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
===== Differences from Java ===== | ===== Differences from Java ===== | ||
- | * Type: Variables are either **scalars** | + | * Type: Variables are either **scalars** prefixed by **$**, **arrays** of scalars prefixed by **@**, or **hashes** of scalar pairs prefixed by **%**. |
- | * Operators: same as Java except **eq**, **gt**, ... for strings. | + | * Operators: same as Java except **eq**, **gt**, **lt**, ... for string comparisons. |
- | * Control Structures (selection and iteration): same plus **foreach** for hashes. | + | * Control Structures (selection and iteration): same as Java plus **foreach** for hashes. |
- | * Cool stuff: interpolation, | + | * Cool stuff: interpolation, |
- | * Web Goodies: CGI module; param; %ENV; many html functions that take an optional hash. | + | ---- |
+ | ===== File I/O in Perl ===== | ||
+ | **Default file handlers:** | ||
+ | * STDIN: Standard input from console | ||
+ | * STDOUT: Standard output to console | ||
+ | * STDERR: Standard error output to console | ||
+ | |||
+ | **Opening a file** | ||
+ | <code perl> | ||
+ | open(FILEHANDLE, | ||
+ | </ | ||
+ | Where FILEHANDLE specifes the name for the file handler in which you will refer to your file and filename specifies the location of your file. | ||
+ | |||
+ | In the file name one can specify the various read/write modes. | ||
+ | ^ Example | ||
+ | | open(FILEHANDLE, | ||
+ | | open(FILEHANDLE, | ||
+ | | open(FILEHANDLE, | ||
+ | | open(FILEHANDLE, | ||
+ | | open(FILEHANDLE, | ||
+ | | open(FILEHANDLE, | ||
+ | |||
+ | File locking for I/O is provided using the **flock()** function. It is suggested to do the lock on a seperate file to prevent race conditions. | ||
+ | <code perl> | ||
+ | open(LOCK, "> | ||
+ | flock(LOCK, LOCK_EX); | ||
+ | open(DATA, myFile); | ||
+ | #...do work with the DATA file... | ||
+ | close LOCK; | ||
+ | close DATA; | ||
+ | </ | ||
+ | Closing the **LOCK** handler automatically unlocks the semaphore. One can also use **flock(LOCK, | ||
+ | ^ Operation | ||
+ | | LOCK_SH | ||
+ | | LOCK_EX | ||
+ | | LOCK_UN | ||
+ | | LOCK_NB | ||
+ | \\ | ||
---- | ---- | ||
+ | ===== Array manipulation: | ||
+ | |||
+ | So by now we know what an array looks like and maybe we've learned a few ways to manipulate it. Well, here's a trick to remove duplicate items in an array while preserving the item's order by using a hash. | ||
+ | |||
+ | Here's a couple of things you ought to know to fully understand the code: | ||
+ | |||
+ | * A hash is like an arrays except that they link a key to a value and the key is unique. | ||
+ | * $_ is a special perl variable known as the default or implicit variable. | ||
+ | |||
+ | <code perl> | ||
+ | @array1 = qw(one two one three four two); | ||
+ | |||
+ | foreach (@array1) { | ||
+ | push(@array2, | ||
+ | } | ||
+ | |||
+ | print " | ||
+ | </ | ||
+ | |||
+ | **output:** one two three four | ||
+ | |||
+ | The reason that we're using a hash here is to use its limitation (each key must be unique) to our advantage. | ||
+ | |||
+ | __Reference: |
ower_own_perl_wiki.1190756334.txt.gz · Last modified: 2007/09/25 21:38 by roumani