Today's Perl Advent Calendar entry talks about the Perl rename command1. This is an awesome command, originally written by Larry Wall himself. However, it's also a constant source of confusion. That's because there is another popular rename command written in C, with a completely different synta...

The course recognizes only two kinds of computers: Macs and PCs. Since I use Linux machines almost exclusively, I have had to learn to cope with this view of the world. It’s pretty popular among the general population. But not for developers usually. It feels especially odd here since MongoDB... Continue reading

Thanks, barefootcoder, I didn't know about Method::Signatures::Modifiers! If we change the Str to String in the signature in the MooseX::Declare example above, we get
'String' could not be parsed to a type constraint - maybe you
need to pre-declare the type with class_type at reader
Parse::Method::Signatures::TypeConstraint::tc (defined at
/home/tim/.plenv/versions/5.18.1/lib/perl5/site_perl/5.18.1/
Parse/Method/Signatures/TypeConstraint.pm line 20) line 7.
which isn't terribly helpful. But when we add use Method::Signatures::Modifiers, we get
15 Hello from myDerivedClass
In call to myBaseClass::doMsg(), the type String is unrecognized
(perhaps you forgot to load it?) at ./useMethodSignaturesModifiers.pl
line 20.
which tells us exactly what is wrong. Nice! Moops fares no better than unassisted MooseX::Declare here
43 Hello from myDerivedClass
In method doMsg: parameter 1 ($m): value "DC Very nice! How much RAM
is Eclipse using?" did not pass type constraint (not isa String) at
./useMoops.pl line 48.
Neither line 48 nor line 43 have much to do with our code.
To be fair to Stevan, when I asked what was wrong with MooseX::Declare, his very sensible answer ended with something like, "but if it's working for you, keep using it."

This morning, I came across this discussion on Reddit. Following the lead of dams and zakame, I had been playing with p5-mop, so I decided to compare. First, here is singe's original example using Object::Tiny #!/usr/bin/env perl use v5.18; use warnings; package myBaseClass { use Object::Tiny q...

Last week, I talked about some of the ways we have to do objects in Perl. I also mentioned that in Go, we don't have classes or inheritance; everything is done with composition. What does that look like? package main import ( "fmt" "runtime" "time" ) type MyBase struct {... Continue reading

Mea culpa! I added Class::Tiny above. We need a more complicated example to explore the differences between all of these systems. As has been pointed out, I've got read-only accessors in some and read-write in others. Nonetheless, it's still kind of neat to have them all laid like this.

This morning, I came across this discussion on Reddit. Following the lead of dams and zakame, I had been playing with p5-mop, so I decided to compare. First, here is singe's original example using Object::Tiny #!/usr/bin/env perl use v5.18; use warnings; package myBaseClass { use Object::Tiny q...

This morning, I came across this discussion on Reddit. Following the lead of dams and zakame, I had been playing with p5-mop, so I decided to compare. First, here is singe's original example using Object::Tiny #!/usr/bin/env perl use v5.18; use warnings; package myBaseClass { use Object::Tiny qw(myID myName); sub doMsg... Continue reading

I've recently discovered Elixir, a dynamic programming language for the Erlang virtual machine. As such, it can easily share code with Erlang. All of that Erlang code out there is available for use in Elixir. And anything we write in Elixir can be used by folks writing in Erlang. It's... Continue reading

Vim 7.4 was just released and it has a new regexp engine which does not backtrack! According to the help, Vim includes two regexp engines: 1. An old, backtracking engine that supports everything. 2. A new, NFA engine that works much faster on some patterns, but does not support everything.... Continue reading

I love having the latest versions of Perl, Python, and Ruby at my disposal. For some time now I've been managing my Perl installations with perlbrew, my Python installations with pythonbrew, and my Ruby installations with rvm. They all work fine and I continue to manage my desktop machine this... Continue reading

I've been playing with Go a lot lately and after years of using mostly dynamic languages, I've had to make some adjustments. But not all of the adjustments have to do with static typing. One big difference is regular expression support. The flavor of regular expressions in Go's regexp library... Continue reading

I went to Stanford! Okay, not really. But I did take their database MOOC. MOOC? What's a MOOC? A MOOC is a Massive Open Online Course. There were tens of thousands of people from all over the world taking this course online at the same time! It was a fantastic... Continue reading

I was just talking about using cpanm to install from github. The latest cpanm also makes it easy to install a developer release. Coincidentally, Ben Bullock just mentioned the developer release of Text::Fuzzy. Let's try it! $ cpanm --dev Text::Fuzzy --> Working on Text::Fuzzy Fetching http://www.cpan.org/authors/id/B/BK/BKB/Text-Fuzzy-0.10_01.tar.gz ... OK Configuring Text-Fuzzy-0.10_01... Continue reading

I agree. That's why I think this is related to the other discussions about CPAN and not just a post about a bug in Config::Simple. Here is a case where it's not experimental code on github and polished code on CPAN, but tarnished code on CPAN and a corrected version on github. We seem to have someone willing and able to correct the bug, but we are unable to correct the bug on CPAN without cooperation from the maintainer.
I also agree about the File::Temp warning. Leaving the temporary directory upon successful install seems to both silence the error and remove the directory.

There has been some discussion this month about CPAN and github and how me might use them better: Brendan Byrd Neil Bowers David Golden Tim Bunce Yanick Champoux Coincidentally, I ran into a bug this week that seems related. Namely, that Config::Simple steps on the $_ variable. That is, if we ...

There has been some discussion this month about CPAN and github and how me might use them better: Brendan Byrd Neil Bowers David Golden Tim Bunce Yanick Champoux Coincidentally, I ran into a bug this week that seems related. Namely, that Config::Simple steps on the $_ variable. That is, if... Continue reading

Well, I don't follow @cpan_new, but I do follow @garu_rj and sometimes that's just as good! He just alerted us to the new Perl module, Devel::hdb. It looks promising! I just ran perl -d:hdb sticky.pl and away we go! Continue reading

I don't think we know what properly is. I certainly won't claim to have all the answers. It just strikes me that all three languages have made similar changes, but handled the versioning differently. Yet none has made it easy to talk about outside their respective communities. In particular, it's hard to talk to managers at $work, where I don't control my own computing environment. It's awkward having to explain why Python 2.7 is newer than Python 3 or why it's so important to get Ruby 1.9.3 when we already have Ruby 1.9.2.

Ruby is 20 years old today! To celebrate, they just released Ruby 2.0! Here is a shelr of me installing it on my laptop for use with rbenv. At the beginning, I'm checking for the ruby-build, which wasn't there yet, so I did it the long way like the rc1 build here. If it had shown up in ruby-buil...

Ruby is 20 years old today! To celebrate, they just released Ruby 2.0! Here is a shelr of me installing it on my laptop for use with rbenv. At the beginning, I'm checking for the ruby-build, which wasn't there yet, so I did it the long way like the rc1... Continue reading

The other day I noticed some videos quit working in Google Chrome on both my Ubuntu 12.04 and 12.10 machines. HTML5 videos still worked, but Flash videos did not. I don't know if Flash is the most fragile software ever, but it certainly fails often enough that I didn't really... Continue reading

Hey, the first Ruby 2.0 release candidate has been released! These days, I've been using rbenv to manage my Ruby installations, but I don't see rc1 in ruby-build yet. No matter, it's easy to add it to rbenv without ruby-build. First, fetch the source code and untar it. $ wget... Continue reading

I visited my Mom recently and I returned home with her old computer. It was giving her problems (aperiodic crashing), so she got a new one. This platform was abandoned by its manufacturer long ago, so there was no hope of updating it anyway. This machine has a PowerPC chip... Continue reading

The jaws that bite, the claws that catch! Today's Perl Advent calendar talks about file locking, which is always mimsy. To continue the gift wrapping metaphor...that all works fine when you're wrapping gifts in the bedroom, but what happens when you decide to use the laundry room instead? That room... Continue reading

I just spotted Nuba Princigalli's tweet on pretty colorful JSON. Neat! My first thought was that Perl could do the download without curl ﻿perl -MLWP::Simple -MDDP -MJSON -e 'p decode_json get shift' http://www.reddit.com/r/perl.json My next thought was that Mojolicious could do the whole thing perl -Mojo -E 'say r j... Continue reading