<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>beer planet &#187; experiences</title> <atom:link href="http://beerpla.net/tag/experiences/feed/" rel="self" type="application/rss+xml" /><link>http://beerpla.net</link> <description>where things have nothing to do with beer - tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</description> <lastBuildDate>Fri, 06 Jan 2012 08:50:59 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <atom:link rel='hub' href='http://beerpla.net/?pushpress=hub'/> <item><title>My Notes On Learning Python Coming From Perl</title><link>http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/</link> <comments>http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/#comments</comments> <pubDate>Fri, 10 Oct 2008 02:13:34 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Programming]]></category> <category><![CDATA[experiences]]></category> <category><![CDATA[learning]]></category> <category><![CDATA[Perl]]></category> <category><![CDATA[Python]]></category> <guid
isPermaLink="false">http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/</guid> <description><![CDATA[<blockquote><p><a
href="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_3.png" class="lightview" rel="gallery['441']" title="image"><img
title="image" style="display: inline; margin: 0px 20px 10px 0px" height="71" alt="image" src="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_thumb_3.png" width="211" align="left" /></a></p></blockquote><p>I’m learning Python. Since I’m currently primarily a Perl coder, I decided it’d be a good idea to post and keep track of my experiences coming from heavy Perl. I have a few reasons for learning Python, which are:</p><ul><li>to see what else is out there and broaden my horizons.</li><li>to keep my brain active by feeding it new tasty information every day.</li><li>to become a more valuable employee and potential future candidate.</li><li>to learn a new language, especially one used by giants like Google.</li><li>to learn a new OO language, as I’m tired of Perl’s hacky OO.</li><li>to build GUI applications. GUI in Perl is a big pain. I’ll see about</li></ul><p>...<div
class=clear></div> <a
href="http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></p>]]></description> <content:encoded><![CDATA[<blockquote><p><a
href="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_3.png" class="lightview" rel="gallery['441']" title="image"><img
title="image" style="display: inline; margin: 0px 20px 10px 0px" height="71" alt="image" src="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_thumb_3.png" width="211" align="left" /></a></p></blockquote><p>I’m learning Python. Since I’m currently primarily a Perl coder, I decided it’d be a good idea to post and keep track of my experiences coming from heavy Perl. I have a few reasons for learning Python, which are:</p><ul><li>to see what else is out there and broaden my horizons.</li><li>to keep my brain active by feeding it new tasty information every day.</li><li>to become a more valuable employee and potential future candidate.</li><li>to learn a new language, especially one used by giants like Google.</li><li>to learn a new OO language, as I’m tired of Perl’s hacky OO.</li><li>to build GUI applications. GUI in Perl is a big pain. I’ll see about Python.</li></ul><p>So, without further ado, here are the notes [WORK IN PROGRESS], split by virtual chapters that I made up myself:</p><p><strong>Chapter 1.</strong></p><ul><li>I’m using <a
href="http://www.eclipse.org">Eclipse</a> for most of my development. <a
href="http://e-p-i-c.sourceforge.net/">E.P.I.C.</a> is the plugin that adds Perl support and it works quite well. For Python, I downloaded the Python plugin called <a
href="http://pydev.sf.net">Pydev</a>. It seems to work quite well as well. The only thing so far I wouldn’t use Eclipse for is PHP because PHPEd trumps all competition (though there’s an Eclipse PHP plugin called <a
href="http://www.phpeclipse.de">PHPEclipse</a>). A quick way to see the plugins you have installed just click Help-&gt;About.</li></ul><p><a
href="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_5.png" class="lightview" rel="gallery['441']" title="image"><img
title="image" style="display: block; float: none; margin-left: auto; margin-right: auto" height="309" alt="image" src="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_thumb_5.png" width="537" /></a></p><ul><li>Tuples are just immutable lists? a = (‘b’, ‘c’) is immutable while a = [‘b’, ‘c'] is just what a regular list in Perl is. I’m not sure what to make of it yet and whether it was worth it giving up such important syntax as () for that.</li><li>I hate ActiveState’s PythonWin console (the editor itself). Ctrl-Up for history and regular Up for traveling around the code? WTF? Though I do like that there are intellisense-like features in it.</li><li>I miss the $, @, %, etc in front of variables. It’s so easy to tell what is a variable and what is not, what type a variable is, as well as insert it right inside quotes.</li><li>I began to understand how many things in Perl I took for granted.</li><li>A hash is called a dictionary in Python (created with { } ). Hash keys are separated from values via “:” instead of Perl’s “=&gt;”. For example, dict = {“a” : “b”, “c” : “d”}. In Perl “=&gt;” and “,” are the same, but in Python “:” and “,” are very different and cannot be used interchangeably.</li><li>At this point I really like the OO feel of typing in a dictionary name, followed by a dot and getting a list of class methods as opposed to Perl’s non-OO approach. Since I’ve been looking to get back into a more OO language than Perl but not as OO as Java, I think Python may be the right fit. We’ll see…</li></ul><p><a
href="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_4.png" class="lightview" rel="gallery['441']" title="image"><img
title="image" style="display: block; float: none; margin-left: auto; margin-right: auto" height="154" alt="image" src="http://beerpla.net/wp-content/uploads/MyNotesOnLearningPythonComingFromPerl_10E56/image_thumb_4.png" width="418" /></a></p><ul><li>Now the book (Wrox Beginning Python) mentions the dict.__contains__() function, which looks internal to me. Why did they not instead use the dict.has_key() function? They look like they do exactly the same thing. Why did they start from functions that are supposed to be hidden in the first place?</li><li>There are special values <em>True</em>, <em>False</em>, and <em>None</em>, which correspond to <em>1</em>, <em>0</em>, and <em>undef </em>(?) in Perl.</li><li>list.remove(VAL) function looks useful. I don’t think Perl has anything like it. It removes the first occurrence of value VAL in list.</li><li>If you list.append() another list, it appends a sub-list object, while list.extend() actually extends the list with another list. In Perl list.append() would correspond to pushing an array ref and list.extend() would be pushing an array itself.</li><li>You can compare 2 sequences (lists, tuples, dictionaries) with ==, just like numbers. In Perl, if you try @a == @b, only array lengths will be compared.</li><li>string concatenation is done via “+” vs Perl’s “.”.<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>str_final = str1 + &quot; &quot; + str2</pre></td></tr></table></div></li><li>The <em>print</em> function has a couple of quirks in Python. <em>print</em> implicitly outputs a space between expressions, and it also implicitly outputs \n after the last expression, unless the last expression is followed by a trailing comma (,).<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
</pre></td><td
class="code"><pre>print &quot;hi&quot;, &quot;I'm&quot;,
print &quot;still on the same line&quot;, &quot;but will end the line now&quot;</pre></td></tr></table></div></li><li>Variable substitution is separated from the print statement by “%” for some reason, compared to Perls’ “,”.<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>print &quot;some string: %s&quot; % str1</pre></td></tr></table></div></li><li>One can do something like<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>a, b, c = x</pre></td></tr></table></div><p>if x is a sequence of 3 items. This would assign a, b, and cy to the items of x, respectively. In Perl, similarly, you could do</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>($a, $b, $c) = @x</pre></td></tr></table></div></li><li>A shortcut for string repetition is<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>print str1 * 10</pre></td></tr></table></div><p>vs Perl&#039;s</p><div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>print $str1 x 10</pre></td></tr></table></div></li></ul><p><strong>Chapter 2.</strong></p><ul><li>Here we go: conditional statements <em>if</em>, <em>elif</em>, and <em>else</em>. This is what I’ve been waiting for – as there are no braces needed around conditional statements, loops, etc, indentation plays the role of controlling context. But for *****s sake, PHP has <em>elseif</em>, Perl has <em>elsif</em>, now <em>elif</em>? What’s next, eif? Anyway, a conditional statement is followed by a “:” and then an indented block of lines.</li><li>I like how I don’t need to put parentheses after <em>if</em>. This is similar to Perl’s notation where <em>if </em>comes after the main statement. However, parentheses are mandatory otherwise in Perl.</li><li>Loops have <em>while</em> and <em>for</em>. <strike>Where’s <em>foreach</em>? (panic… noooooooooooooooooooooooo!!! Perl spoiled me.)</strike> Actually, I was wrong. It’s exactly the opposite – Python’s <em>for</em> is exactly like Perl’s <em>foreach</em> (thanks Travis!). Rather, Python doesn’t have the c-style <em>for</em>. To break out of a loop, <em>break</em> is used (phew, at least this is expected) vs Perl’s <em>last</em> and to continue, <em>continue</em> is used vs Perl’s <em>next</em>.</li><li>Oh, so back to indentation again. Any inconsistent indentation is accompanied by an <em>IndentationError</em> (<em>Inconsistent dedent</em> in Pydev Eclipse) compile time error. I think I like this rule in general, because it encourages proper white space in the code but I have not decided yet. This makes me kind of worried – what if some code gets slightly scrambled and some spaces get lost, for example copy-pasting from a random Internet site or if my blog code displaying tools lose indentation. In Eclipse, a simple Ctrl-Shift-F, which runs Perltidy, can fix any indentation problems and inconsistencies. I don’t know Python, I don’t know…</li><li>This is interesting: a loop can have an <em>else</em> statement. If the loop does not end via <em>break</em>, the else statement triggers. I could see this usage for example: if I’m TODOlooking for something in a hash, you can break the else statement can print “Not found” and act on it.</li><li>Slicing multiple consecutive values in lists is done via “:” rather than Perl’s “..”. Compare list[1:3] vs Perl’s @list[1..3]. . What&#039;s interesting is an optional 3rd parameter to the slice, which specifies a stride. Thus, list[::2] would produce a sequence with items that have an even index in list and list[::-1] would reverse the list. Quite handy and original.</li><li>if no action is performed by something that requires a level of indentation (for example, an <em>if</em> statement that does nothing), a special keyword <em>pass </em>needs to be used. In Perl, it would just be an empty set of parentheses.<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
4
</pre></td><td
class="code"><pre>if some_event_that_needs_no_action:
  pass
else:
  # do stuff</pre></td></tr></table></div></li></ul><p><strong>Chapter 3.</strong></p><ul><li>Python seems to have proper exception handling support. A breath of fresh air from Perl’s hacky evals. Try with <em>try</em>, catch with <em>except</em>, and finally with <em>finally</em>. What is the generic Error name that you can use to catch all errors?</li><li>One can raise an error by using a <em>raise</em> keyword.</li></ul><p><strong>Chapter 4.</strong></p><ul><li>Functions are defined using the <em>def</em> keyword, as opposed to Perl’s <em>sub</em>.</li><li>Function documentation (docstring) is simply a string that follows the function definition. It is what intellisense-enabled IDEs use (and probably some sort of python documenters). This information is also available as <em>function_name.__doc__</em>. I really like this as I think Perl’s POD style is hideous. I’ll have to see how powerful this docstring can get, because perlpod, though hideous, supports a variety of formatting options.</li><li><em>dir(object)</em> shows all properties of <em>object</em>. I’m guessing this is another way intellisense IDEs get the information to show a user. For example,<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
2
3
</pre></td><td
class="code"><pre>&gt;&gt;&gt; dir(my_func)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']</pre></td></tr></table></div></li><li>A function can have default parameters, similar to PHP. Perl 5 doesn’t have such construct, it’s only introduced in <a
href="http://beerpla.net/2008/08/22/moving-from-perl-5-to-perl-6-whats-new-tutorial-style/">Perl 6</a>. For example<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>def do_search(string, start = &quot;.&quot;):</pre></td></tr></table></div></li><li>A function can be defined within another function and will only be available in the latter’s scope. I am fairly sure Perl allows you to do the same, though I see this functionality as very insignificant.</li><li>type() allows one to determine the type of a variable. For instance, to see if a variable is a dictionary<div
class="wp_syntax"><table><tr><td
class="line_numbers"><pre>1
</pre></td><td
class="code"><pre>if type(dict) == type({}):</pre></td></tr></table></div></li></ul><p><strong>Chapter 5.</strong></p><ul><li>A class is defined using a keyword <em>class</em> vs Perl’s <em>package</em>. Talking about Perl’s class implementation causes vomiting reaction in me, and I’m really hoping Python’s is better. Python is supposed to be a proper OO language and that is partly why I’m learning it. However, one thing is upsettingly common between Python and Perl and that is <em>self</em> in Python and <em>$self</em> in Perl are the first parameters in class member functions, rather than being implied, like in C++ or PHP. So one has to write def add(self, num_list) rather than def add(num_list). Is it because Python is so OO to the bone that it has to have everything declared and nothing implied?</li><li>At first sight, a few things are kind of upsetting actually. The examples in the book don’t define member variables – they just assign them outside of the class definition. Whaaaat? How is this different from Perl then?</li><li>A function is public by default. To make a function private, one needs to prefix it with __. However, if it also ends with __, it’s not private&#160; but instead just considered internal (kind of like hidden but not really). An internal function is technically supposed to be used by member methods only but nothing prevents anyone outside the class definition to call it (see the __contains__() example in chapter 1). That’s a bit ambiguous to say the least but still better than Perl’s hacks related to private functions.</li><li>Python doesn’t support protected functions.</li><li>At this point I’m starting to read <a
href="http://www.amazon.com/dp/0596100469/?tag=beepla-20">O’Reilly Python In A Nutshell</a> in parallel with <a
href="http://www.amazon.com/dp/0764596543/?tag=beepla-20">Wrox Beginning Python</a> that I’ve been reading so far. It is much more concise and to the point. Wrox assumes I’m a total noob, even beyond noob. I highly recommend the O’Reilly book.</li></ul><p>&#160;</p><p>&#160;</p><p>[WORK IN PROGRESS]</p><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=My+Notes+On+Learning+Python+Coming+From+Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=My%20Notes%20On%20Learning%20Python%20Coming%20From%20Perl&amp;link=http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/&amp;notes=%20%20%20%20%20%20I%E2%80%99m%20learning%20Python.%20Since%20I%E2%80%99m%20currently%20primarily%20a%20Perl%20coder%2C%20I%20decided%20it%E2%80%99d%20be%20a%20good%20idea%20to%20post%20and%20keep%20track%20of%20my%20experiences%20coming%20from%20heavy%20Perl.%20I%20have%20a%20few%20reasons%20for%20learning%20Python%2C%20which%20are%3A%20%20%20%20%20to%20see%20what%20else%20is%20out%20there%20and%20broaden%20my%20horizons.%20%20%20%20%20to%20keep%20my%20b&amp;short_link=http://bit.ly/cx7tx6&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2008/12/16/the-ultimate-programming-language-lolcode/" rel="bookmark" title="December 16, 2008">The Ultimate Programming Language &#8211; LOLCODE</a></li><li><a
href="http://beerpla.net/2009/11/04/android-auto-formatting-android-xml-files-with-eclipse/" rel="bookmark" title="November 4, 2009">[Android] Auto Formatting Android XML Files With Eclipse</a></li><li><a
href="http://beerpla.net/2008/03/21/quick-snippet-finding-if-a-file-has-a-media-extension-using-regex/" rel="bookmark" title="March 21, 2008">Quick Perl Snippet: Finding If A File Has A Media Extension Using Regex</a></li><li><a
href="http://beerpla.net/2008/08/22/moving-from-perl-5-to-perl-6-whats-new-tutorial-style/" rel="bookmark" title="August 22, 2008">Moving From Perl 5 to Perl 6 &#8211; What&#039;s New, Tutorial Style</a></li><li><a
href="http://beerpla.net/2008/04/29/how-do-i-get-both-the-return-value-and-text-in-perl-backticks-vs-system-perl-510/" rel="bookmark" title="April 29, 2008">How Do I Get Both The Return Value And Text In Perl? Backticks vs. System() (Perl 5.10)</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2008%2F10%2F09%2Fmy-notes-on-learning-python-coming-from-perl%2F&amp;title=My%20Notes%20On%20Learning%20Python%20Coming%20From%20Perl" id="wpa2a_2"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2008/10/09/my-notes-on-learning-python-coming-from-perl/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
