Category: Programming

  • Learning from Bad Code

    I’ve written before about Linux Format’s habit of sharing badly written Perl code. I thought things were improving, but in the new edition (November 2012, issue 163) they’re back to their old tricks. This time it’s a tutorial called “Starfield: Learn new languages”. In this tutorial Mike Saunders writes similar starfield simulation code in C,…

  • A Cautionary Tale

    A Cautionary Tale

    I can never remember exactly how Time::Piece works. But that’s ok because I have documentation. $ perldoc Time::Piece No documentation found for “Time::Piece”. Huh? $perl -v This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-linux-thread-multi … $ corelist Time::Piece Time::Piece was first released with perl v5.9.5 $ perl -MTime::Piece -E’say $Time::Piece::VERSION’ Can’t…

  • CGI.pm vs Templates

    I’ve just been involved in a discussion on LinkedIn that I thought deserved a wider audience (I have no idea how well that link works if you’re not a member or or logged in to LinkedIn). A couple of days ago, someone asked for advice on the best way to include HTML in a Perl…

  • What is Modern Perl?

    I wrote an article for Josette called “What is Modern Perl?” In it, I talk about the different things that people might mean when they talk about Modern Perl and why it’s well worth buying a copy of the new edition of the camel book. After a gap of twelve years, a new edition of…

  • How Well Can You Read Documentation?

    (I was going to call this post “How well do you understand context?” but I think this title is more accurate). I just saw someone recommending this code: $reversed = reverse(split //, $string); Looks sensible enough, doesn’t it? But it isn’t. What’s the hidden inefficiency?