Topic Analysis of PerlCon 2019 talks

I have been saying for quite a long time that we should market our conferences and events more to non-Perl developers.

I think we as a Perl community could greatly profit from having some fresh input from other communities, and the other communities might realize that Perl is a nice, beautiful language (family) which you can use for sane (and crazy) things. BTW, a big ++ to for their Perl & Friends event on November 9th!

So I'm interested in what kind of topics the talks cover, and how many of those might be of interest to non-Perl devs. Therefor I've downloaded the PerlCon 2019 schedule, massaged the HTML a bit using vim0 into a tab-separated file, and wrote a small script to calculate1 some stats.

I use four different categories: Perl5, Perl6, General and Other Tech. General means talks that are of general interest to any developer (testing, hiring, etc), while Other Tech demonstrate some other technology (JavaScript, SQL, etc) and also might be interesting to non-Perl people. Of course some of the Perl5 and Perl6 topics could also be of use to everybody...

I have classified the talks using my gut feeling based on my impression of the talk (if I attended) or a quick skimming of the abstract or the slides. If you feel that I misclassified a talk, please send me a pull request / patch.


  • Perl 5: 40% (775 min)
  • Perl 6: 24% (470 min)
  • General: 24% (460 min)
  • Other Tech: 11% (215 min)

This means that approximately ⅓ of the PerlCon talks should be of interest to non-Perl developers (plus several of the ones labeled as 5 or 6).

Which IMO again proves that we should really try to market our conferences to other communities!


As mentioned in this tweet, there is also a JSON version of the schedule, which would have made the task even easier. Patches welcome to update the script to use the JSON file :-)


0 and learned how to do non-greedy matches in vim regex: :%s/<div.\{-}>//g

1 It's rather simple Perl 5, and probably one could do all of the calculations in a spreadsheet, but I guess there's a reason this is posted in the context of a Perl conference :-)

I guess the only lines that might need explaining are

my $raw_duration = $row[1];
my ( $fh, $fm, $th, $tm ) =
    $raw_duration =~ /(\d\d):(\d\d)–(\d\d):(\d\d)/;
my $dur = ( ( $th * 60 ) + $tm ) - ( ( $fh * 60 ) + $fm );

Instead of parsing the time slots ("12:30-12:50") into some Time module, I just convert the hours to minutes and then subtract the stop-time from the start-time.

Of course I later found this page which has the duration listed, but I was already done with my script, so meh.