SPUG: a split question . . .

Ken McGlothlen mcglk at serv.net
Mon Feb 21 22:43:03 CST 2000


Matthew Lasar <matthew at lasarletter.com> writes:

| [...] I'm working my way through a book called *SAMs Teach Yourself Perl in
| 24 Hours*.
| 
| Let me assure you, 24 hours came and went quite a while ago.

That's because it's not a very good book.  :)  There are better ones out there;
if you need a list, let us know.  I'm sure you'll get a dozen repeated
suggestions that would make much better choices.

| Anyway, so here's this sample database program which starts with the
| following lines of code:
| 
| #!/usr/bin/perl -w
| open(PH, "database.txt") or die "Cannot open database.txt: $!\n";
| while(<PH>) {
| 	chomp;
| 	($number, $email)=(split(/\s+/, $_)) [1,2];
| 
| The book doesn't adequately explain the last piece of this script, the
| "[1,2];" part. What is this for?

Okay.  Let's look at this a bit.  $_, of course, is a line out of the
filehandle PH, which is coming out of database.txt.  We've already removed the
newline at the end with chomp(), and now we have a set of fields separated with
whitespace.  The split() statement chops up the line based on the whitespace,
and returns a list.  The subscript here is used like an operator; it's a slice
of an array.  In this case, it returns the second and third elements of
the list.  Those, in turn, get assigned with the = operator to $number and
$email, respectively.

Got all that?

| Also, if I've got windows 95, what should I really put after "#!"? That stuff
| looks like a unix path to me.

It is, of course.  It's been a while since I've used ActiveState's version of
Perl (which is what I'm guessing you're using), but it didn't used to matter
what you put there under that implementation---but it's a useful line to keep
around if you move the script to a Unix system.  :)  It's also useful in that I
think ActiveState will recognize the options (in this case, -w, which provides
more warnings).  However, their documentation will give you much better answers
than my rusty memory will provide.

Best of luck, and welcome to the fold().  :)

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    POST TO: spug-list at pm.org        PROBLEMS: owner-spug-list at pm.org
 Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/
 SUBSCRIBE/UNSUBSCRIBE: Replace ACTION below by subscribe or unsubscribe
        Email to majordomo at pm.org: ACTION spug-list your_address





More information about the spug-list mailing list