Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ MUSHclient ➜ Perlscript ➜ Learning Perl

Learning Perl

It is now over 60 days since the last post. This thread is closed.     Refresh page


Posted by Toruk   (15 posts)  Bio
Date Sun 20 Apr 2008 12:30 PM (UTC)

Amended on Sun 20 Apr 2008 12:32 PM (UTC) by Toruk

Message
After thinking about what program language to learn how to script in I've finally came up with the descion to use Perl. R

Im reading "Learning Perl, 4th edition" at the moment and I'm hoping that learning perl and using it to make scripts with the client will be something that does not turn out to a major headache.

But to get to the point, If anyone knows good tutorial sites or has a reference of good books to learn for a begginer in Perl. I know I can use google to search but considering there is alot of sites out there to choose from Someone might now a good one off hand instead of me having to pick and choose.

And this is my first language I've choosen to learn. So hopefully I didn't make the wrong choice.
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #1 on Sun 20 Apr 2008 06:56 PM (UTC)
Message
If you have nothing much invested in Perl, and are flexible in your decision, I would strongly recommend that you try learning Lua instead. It is an easier language with far fewer idiosyncrasies, and besides is more supported on this site. Although I like Perl because I've known it for quite a while, I would not decide to use it in anything larger than a few lines of code.

I would recommend the book "Programming in Lua", available for free online:
http://www.lua.org/pil/
The manual is also available but it is not really a tutorial, and more of a reference:
http://www.lua.org/manual/

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Nick Gammon   Australia  (23,140 posts)  Bio   Forum Administrator
Date Reply #2 on Sun 20 Apr 2008 09:22 PM (UTC)
Message
Quote:

If anyone knows good tutorial sites or has a reference of good books to learn for a begginer in Perl.


I don't really know, sorry. There are heaps of sites and books, so it probably is a case of getting a good one for you which might not be one I would recommend, as I have been programming for years. Different books, and web sites, are tailored to different levels of initial understanding. For example, one site might say "this will create a lookup table with a string key". Some people might say "Ah, I know what that is", but others would say "a what with a what?" - in which case you want a book/site that explains in more detail.

Perl is certainly a mature language, it has been around for a long time, and there are many, many resources to help you learn it.

Having said that, I would agree with David that you are probably better off starting with Lua. The problem with Perl (apart from the fact that the language syntax is, IMHO, slightly obscure) is that it isn't really designed as a script language to be called by the Windows Script Host. Now I know the Active Perl people have made a version that does work with the WSH, but in places the extra complexity can add even more obscurity.

As an example, I will look at how you print (in a script) all the MUSHclient variables in a world. See this page for the function documentation:

http://www.gammon.com.au/scripts/doc.php?function=GetVariableList

The Lua version is very simple:


for k, v in pairs (GetVariableList()) do 
  Note (k, " = ", v) 
end


The VBscript version isn't too bad, as WSH was really designed around VBscript:


varList = GetVariableList

If Not IsEmpty (varList) Then
  
  For Each v In varList 
    Note v & " = " &  GetVariable (v)
  Next

End If


The PerlScript version starts to look messy:


foreach $item (Win32::OLE::in ($world->GetVariableList))
 {
 ($key, $value) = ($item, $world->GetVariable ($item));
 $world->Note($key . " = " . $value) if (defined ($key));
 }


The problem here is that an array (in this case a list of variables) has been generated as a Visual Basic "variant" type, which Perl does not natively support. Thus you have to use a special function (Win32::OLE::in) to get at items in it.

Certainly you can use Perl if you want, and some of the posters on this site know Perl and will be happy to help you.

Perhaps first browse through the functions documentation:

http://www.gammon.com.au/scripts/doc.php

Most of the MUSHclient functions described there have example snippets in each language. See if you feel comfortable with the Perl ones, before committing too far to that language.

Good luck.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
Top

Posted by Toruk   (15 posts)  Bio
Date Reply #3 on Tue 22 Apr 2008 12:28 PM (UTC)
Message
Hmm at first I was going to learn LUA went through some tutorials and it was pretty easy. I got into perl and it seem a little harder to work with. So I think ill learn lua then in the future try taking a look at perl or another language.

Thanks for the input guys.
Top

Posted by Toruk   (15 posts)  Bio
Date Reply #4 on Tue 22 Apr 2008 04:54 PM (UTC)
Message
Yeah I seem to be understanding Lua alot more then I was Perl. And so far everything I needed to script has turned out simple

except a way to pause my speedwalk and resume it when I say so but I found a script on the forums for that. Sooo everything is gravy for now :)
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


22,461 views.

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.