It is the most widely used programming language on earth, thanks to the popularity and accessibility of the Web. Programmers don't have all the time in the world, they need something that do powerful things and resembles English (or any practical language we humans like) so that it's easy to learn. They pick Perl often because of this.
An astonishing number of web users use it everyday and never know it. It's like that widget that keeps your fridge cold. Some widgets just don't advertise themselves.
Perhaps we don't want to hear about it, I can live with fewer logos and brand names personally--please hide the widget that makes the fridge code and don't tag it with logos.
Perl is different, you won't want it hidden, it's too useful. Like English. You want it exposed. Often used.
You need to use your brain, and feel fun and creative, have an itch to solve problem, possess copious amount of laziness so that you'll want to solve it with the minimum amount of fuss. But that's it.
Something simple and fun: I often find that my favorite online services are created using Perl. I learned to do this with a service call the Netcraft Website Finder (at www.netcraft.com). Consider writing down the web address to 10 of your most favorite websites and do a simple search on Netcraft. For example, my first entry is "www.everything2.com". After clicking on the go button I get an answer telling me that Perl is powering www.everything2.com! It's not always so straight-forward. If it says it's running Apache, Linux, mod_perl, or cgi or just some long winded phrase or product with any of those previously mentioned words--chances are that perl is an integral part of that web service. You may learn that few people will have a list where none of the sites use Perl.
Interesting things you can do with Perl:
Perl isn't really a swiss army knife. That's more like C. Perl is a large, metallic toolbox containing: a complete set of box-end wrenches in metric and imperial, except 10mm and 3/8"; a selection of five machinists' hammers; one regular construction hammer; ten- and twelve-pound sledgehammers; complete set of Robertson screwdrivers; and an infinite length of duct tape. -- Charles Cazabon
This is the genealogy of the programming language Perl:
Perl is a child of awk, sh, C, csh, Pascal and Basic.Perl was first known as Perl 1.000 in year 1987. It became Perl 2.000 in year 1988. It became Perl 3.000 in year 1989. It became Perl 4.000 in year 1991. Then it begat Ruby in year 1993. It became Perl 5.000 in year 1994. Then it begat PHP in year 1995. It became Perl 5.005_50 in year 1998. It became Perl 5.6.0 in year 2000. It became Perl 5.8.0 in year 2002, and has not changed much since that time.
If you cannot believe that Perl is a child of Basic or Pascal, read the Perl man page. Perl is also a child of sed, which has no entry here because sed is an editor, not a language.
This genealogy is brought to you by the Programming Languages Genealogy Project. Please send comments to thbz.
- A - $^A -A abs accept $ACCUMULATOR alarm atan2 $ARG ($_) @ARGV $ARGV autoflush - B - -b -B $BASETIME bind binmode bless - C - -c -C caller chdir $CHILD_ERROR ($?) chmod chomp chop chown chr chroot close closedir connect continue cos crypt - D - $^D -d dbmclose dbmopen $DEBUGGING defined delete die do dump - E - $^E -e each $EFFECTIVE_GROUP_ID ($)) $EFFECTIVE_USER_ID ($>) $EGID endgrent endhostent endnetent endprotoent endpwent endservent $ENV{expr} eof $ERRNO $EUID $EVAL_ERROR ($@) eval exec $EXECUTABLE_NAME exists exit exp $EXTENDED_OS_ERROR - F - $^F -f fcntl fileno flock fork $FORMAT_FORMFEED format_formfeed $FORMAT_LINE_BREAK_CHARACTERS ($:) format_line_break_characters $FORMAT_LINES_LEFT format_lines_left $FORMAT_LINES_PER_PAGE format_lines_per_page $FORMAT_NAME format_name $FORMAT_PAGE_NUMBER format_page_number $FORMAT_TOP_NAME format_top_name format formline - G - -g getc getgrent getgrgid getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr getnetbyname getnetent getpeername getpgrp getppid getpriority getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid getservbyname getservbyport getservent getsockname getsockopt $GID glob gmtime goto grep - H - $^H hex - I - import $^I %INC @INC index $INPLACE_EDIT $INPUT_LINE_NUMBER ($.) input_line_number $INPUT_RECORD_SEPARATOR ($/) input_record_separator int ioctl - J - join - K - -k keys kill - L - $^L -l $LAST_PAREN_MATCH last lc lcfirst length link $LIST_SEPARATOR ($") listen local localtime log lstat - M - m// $^M -M map $MATCH mkdir msgctl msgget msgrcv msgsnd $MULTILINE_MATCHING my - N - next no $NR - O - $^O -o -O oct $OFMT ($#) $OFS open opendir ord $ORS $OS_ERROR ($!) $OSNAME $OUTPUT_AUTOFLUSH $OUTPUT_FIELD_SEPARATOR ($,) output_field_separator $OUTPUT_RECORD_SEPARATOR ($\) output_record_separator - P - $^P -p pack package $PERL_VERSION $PERLDB $PID pipe pop pos $POSTMATCH $PREMATCH print printf $PROCESS_ID ($$) $PROGRAM_NAME prototype push - Q - q/STRING/ qq/STRING/ quotemeta qw/STRING/ qx/STRING/ - R - -r -R rand read readdir readline readlink readpipe $REAL_GROUP_ID ($)) $REAL_USER_ID ($<) recv redo ref rename require reset return reverse rewinddir rindex rmdir $RS - S - s/// -s -S scalar seek seekdir select semctl semget semop send setgrent sethostent setnetent setpgrp setpriority setprotoent setpwent setservent setsockopt shift shmctl shmget shmread shmwrite shutdown $SIG{expr} sin sleep socket socketpair sort splice split sprintf sqrt srand stat study sub $SUBSCRIPT_SEPARATOR ($;) $SUBSEP substr symlink syscall sysopen sysread sysseek $SYSTEM_FD_MAX system syswrite - T - $^T -t -T tell telldir tie tied time times tr/// truncate - U - -u uc ucfirst $UID umask undef unlink unpack unshift untie use utime - V - values vec - W - $^W -w -W wait waitpid wantarray warn $WARNING write - X - $^X -x -X - Y - y/// - Z - -z
Perl /perl/ n.
[Practical Extraction and Report Language, a.k.a. Pathologically Eclectic Rubbish Lister] An interpreted language developed by Larry Wall (<larry@wall.org>, author of patch(1) and rn(1)) and distributed over Usenet. Superficially resembles awk, but is much hairier, including many facilities reminiscent of sed(1) and shells and a comprehensive Unix system-call interface. Unix sysadmins, who are almost always incorrigible hackers, generally consider it one of the languages of choice, and it is by far the most widely used tool for making `live' web pages via CGI. Perl has been described, in a parody of a famous remark about lex(1), as the Swiss-Army chainsaw of Unix programming. Though Perl is very useful, it would be a stretch to describe it as pretty or elegant; people who like clean, spare design generally prefer Python. See also Camel Book, TMTOWTDI.
--The Jargon File version 4.3.1, ed. ESR, autonoded by rescdsk.
...the essence of Modernism is to take one cool idea and drive it into the ground.... Think about Lisp, and parentheses. Think about Forth, and stack code. Think about Prolog, and backtracking. Think about Smalltalk, and objects. (Or if you don't want to think about Smalltalk, think about Java, and objects.) Think about Python, and whitespace. Hi, Guido. Well...Perl does one thing, and does it well. What it does well is to integrate all its features into one language. More importantly, it does this without making them all look like each other. Ducts shouldn't look like girders, and girders shouldn't look like ducts. Neither of those should look like water pipes, and it's really important that water pipes not look like sewer pipes. Or smell like sewer pipes. Modernism says that we should make all these things look the same (and preferably invisible). Postmodernism says it's okay for them to stick out, and to look different, because a duct ought to look like a duct, and a sewer pipe ought to look like a sewer pipe, and hammer ought to look like a hammer, and a telephone ought to look like either a telephone, or a Star Trek communicator. Things that are different should look different. --Larry Wall, "Perl, the first postmodern computer language", LinuxWorld Spring 1999
Think about Python, and whitespace. Hi, Guido.
Well...Perl does one thing, and does it well. What it does well is to integrate all its features into one language. More importantly, it does this without making them all look like each other. Ducts shouldn't look like girders, and girders shouldn't look like ducts. Neither of those should look like water pipes, and it's really important that water pipes not look like sewer pipes. Or smell like sewer pipes. Modernism says that we should make all these things look the same (and preferably invisible). Postmodernism says it's okay for them to stick out, and to look different, because a duct ought to look like a duct, and a sewer pipe ought to look like a sewer pipe, and hammer ought to look like a hammer, and a telephone ought to look like either a telephone, or a Star Trek communicator. Things that are different should look different.
--Larry Wall, "Perl, the first postmodern computer language", LinuxWorld Spring 1999
Both Perl's strengths and weaknesses are directly attributable to this philosophy of getting things done -- practicality over idealism. Or, as Wall's daughter would say, "'Tsall good..." Perl is incredibly flexible and expressive because Larry Wall stole the best features of other languages, without getting hung up by requiring everything to look like a hammer. At the same time, Perl is often bizzare, confusing and downright ugly, again due to the lack of a unifying idea.
"There's more than one way to do it." It could be argued that Perl's unifying idea is the lack of a unifying idea:
Modernism puts the focus squarely on the hammer and the nail. In contrast, postmodernism puts the focus back onto the carpenter. You'll note that carpenters are allowed to choose whether or not to use hammers. They can use saws and tape measures if they choose, too... They're allowed to be creative. --Larry Wall, "Perl, the first postmodern computer language"
--Larry Wall, "Perl, the first postmodern computer language"
http://www.wall.org/~larry/pm.html
Addendum: some people have /msg'ed me with corrections -- that Jamie Zawinski is an instance of a Java hacker, that Larry Wall's concept of modernism is fuzzy... I say, 'tsall good. :)
printable version chaos
Everything2 Help
cooled by dannye