SlideShare une entreprise Scribd logo
1  sur  261
Télécharger pour lire hors ligne
Perl 5
Today, Tomorrow, and Christmas
The Perl Dev That Was
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
- that was three years ago (!!)
The Perl Dev That Was

- between perl 5.10 and perl 5.12, we changed
  how the release cycle works
- that was three years ago (!!)
- hopefully this is the last time we need to talk
  about the old ways
The Old Days
                5.9.0 5.9.1 5.9.2
blead

        5.8.0   5.8.1         5.8.2
maint
                                      5.10.0
The Old Days
The Old Days

- what merits a new dev release?
The Old Days

- what merits a new dev release?
- when is a new major release done?
The Old Days

- what merits a new dev release?
- when is a new major release done?
- what can get backported?
The Old Days

- what merits a new dev release?
- when is a new major release done?
- what can get backported?
- i.e., how stable is a stable release?
When I say so is when!
When I say so is when!

- not a terrible idea in theory
When I say so is when!

- not a terrible idea in theory
- but in practice, it led to very long waits for
  new features to be usable
When I say so is when!

- not a terrible idea in theory
- but in practice, it led to very long waits for
  new features to be usable
- ...which led to bad designs surviving
- worse, the pumpking is now busy doing
- worse, the pumpking is now busy doing
  - "cherrymaint"
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
  - cat herding (read: arguing with angries)
- worse, the pumpking is now busy doing
  - "cherrymaint"
  - release planning
  - release "paperwork"
  - cat herding (read: arguing with angries)
- ...but is actually a hugely valuable coder
The Interregnum
The Interregnum

- the 5.10 crisis
The Interregnum

- the 5.10 crisis
- the San Diego call
The Interregnum

- the 5.10 crisis
- the San Diego call
- 5.11 and the release engineers corps
The Interregnum

- the 5.10 crisis
- the San Diego call
- 5.11 and the release engineers corps
- any idiot can do it!
New Blead
        2011-06
         5.15.0
blead
New Blead
        2011-06   2011-07
         5.15.0    5.15.1
blead
New Blead
        2011-06   2011-07   2011-08
         5.15.0    5.15.1    5.15.2
blead
New Blead
        2011-06   2011-07   2011-08   2011-09
         5.15.0    5.15.1    5.15.2    5.15.3
blead
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9
blead
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9
blead

maint
                                                          2012-06
                                                           5.16.0
New Blead
        2011-06   2011-07   2011-08   2011-09   2012-05   2012-06
         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9    5.17.0
blead

maint
                                                          2012-06
                                                           5.16.0
New Blead
        David G.   Zefram      Rik     Stevan    Abigail   Zefram
         2011-06   2011-07   2011-08   2011-09   2012-05   2012-06
          5.15.0    5.15.1    5.15.2    5.15.3    5.15.9    5.17.0
blead

maint
                                                           2012-06
                                                            5.16.0
                                                             Rik
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06
         5.16.0
          Rik
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07
         5.16.0    5.16.1
          Rik         ?
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09
         5.16.0    5.16.1    5.16.2
          Rik         ?        ?
New Maint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
Minimal Maint
Minimal Maint
- almost all dev. burden is kept in blead
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
- (which includes security)
Minimal Maint
- almost all dev. burden is kept in blead
- the rules about changing maint are strict
- must be critical bug fix
- (which includes security)
- very effective! in fact, so effective that...
Multimaint
                 Zefram
                 2012-06
                  5.17.0
blead

maint-5.16
                 2012-06    2012-07   2012-09   2013-??
                  5.16.0     5.16.1    5.16.2   5.16.2
                   Rik          ?        ?         ?

maint-5.14
       2011-05
        5.14.0
         Jesse
New Cherrymaint
        Zefram
        2012-05
         5.17.0
blead

maint
        2012-05   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
New Cherrymaint
        Zefram
        2012-06
         5.17.0
blead

maint
        2012-06   2012-07   2012-09   2013-??
         5.16.0    5.16.1    5.16.2   5.16.2
          Rik         ?        ?         ?
Pumpking?
What is the Pumpking?
What is the Pumpking?
- the patch pumpkin
What is the Pumpking?
- the patch pumpkin
- the person with the conch
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
- was: the one who could do everything
What is the Pumpking?
- the patch pumpkin
- the person with the conch
- the benevolent dictator for now
- was: the one who could do everything
- now: the one who manages
Jesse and Rik
Jesse and Rik

- we get along well
Jesse and Rik

- we get along well
- we both want what is good for Perl 5
Jesse and Rik

- we get along well
- we both want what is good for Perl 5
- but we see the future very differently
Rik and Jesse
Rik and Jesse


- Jesse's "5.16 and Beyond" was inspired by his
  hopes and dreams
Rik and Jesse


- Jesse's "5.16 and Beyond" was inspired by his
  hopes and dreams
- This talk is inspired by my fears and anxieties
The Pumpking's Job
The Pumpking's Job


- ...is not to make sure perl gets better.
- It's to make sure perl doesn't get worse.
Designing Perl
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
- Saying "make it so" depends on having a crew
  who will make it so.
Designing Perl
- So, does that mean that the pumpking is
  Perl's designer?
- Only to the extent that the designs he offers
  are carried out.
- Saying "make it so" depends on having a crew
  who will make it so.
- Instead, he or she is the decider.
How a Bill Becomes a Law
Mailing List Judo
Mailing List Judo

- how do you get your change applied?
Mailing List Judo

- how do you get your change applied?
- by avoiding controversy
Mailing List Judo

- how do you get your change applied?
- by avoiding controversy
- ...at least on the list
Syntax
Syntax

- perl programmers obsess over it
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem

- ?->
Syntax

- perl programmers obsess over it
- even when the semantics are the real
  problem

- ?->
- letting a syntax discussion start can be fatal
Changing Anything
Changing Anything


- some argue that change itself is bad
Changing Anything


- some argue that change itself is bad
- "someone might be relying on this error"
Other Lunacy
Other Lunacy

- "Your patch is nice, but why don't we do
  fifteen other things along with it?"
Other Lunacy

- "Your patch is nice, but why don't we do
  fifteen other things along with it?"
- "There are serious problems with this patch,
  too large to fit in the margin of this email."
...and in reality...
...and in reality...

- These observations are true.
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
- Everybody wants to avoid a long p5p thread
...and in reality...

- These observations are true.
- So the advice to "lobby in private" seems
  promising.
- Everybody wants to avoid a long p5p thread
- …because p5p can be a horrible place.
U+1F4A9
U+1F4A9

- In most cases, everything I've just said is true.
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
- p5p has, in part, a culture of fear
U+1F4A9

- In most cases, everything I've just said is true.
- …and also crap.
- p5p has, in part, a culture of fear
- …of endless, horrible argument
Improving p5p
Improving p5p

- if discussion on p5p was not only reliably
  civil…
Improving p5p

- if discussion on p5p was not only reliably
  civil…
- …but also technically on point…
Improving p5p

- if discussion on p5p was not only reliably
  civil…
- …but also technically on point…
- contributors would want to engage in it
Improving p5p
Improving p5p

- we would still try to avoid controversy
Improving p5p

- we would still try to avoid controversy
- …but by reaching consensus, not with tricks
Improving p5p

- we would still try to avoid controversy
- …but by reaching consensus, not with tricks
- so the pumpking never needs to decide!
The Pumpking's Job
The Pumpking's Job

- What will I do with all that free time?
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
- My promise:
The Pumpking's Job

- What will I do with all that free time?
- I will try to improve the list's culture.
- My promise:
  - I will call out unreasonable arguments
    and, even more, unreasonable behavior.
The Pumpking's Job
The Pumpking's Job


- ...is to make sure p5p culture gets better.
The Final Decision
The Final Decision

- sometimes, controversy is unavoidable
The Final Decision

- sometimes, controversy is unavoidable
- there is no consensus on whether a new
  feature is a good idea
The Final Decision

- sometimes, controversy is unavoidable
- there is no consensus on whether a new
  feature is a good idea
- how can Rik still avoid having to decide?
CPAN, not perl
CPAN, not perl

- can the feature be implemented on CPAN?
CPAN, not perl

- can the feature be implemented on CPAN?
- if not, why not? can that be fixed?
CPAN, not perl

- can the feature be implemented on CPAN?
- if not, why not? can that be fixed?
- can its semantics be simulated for testing?
feature
feature

- can the feature be lexically hidden behind
  feature.pm?
feature

- can the feature be lexically hidden behind
  feature.pm?
- (remember, not every feature needs to be in a
  version bundle)
feature

- can the feature be lexically hidden behind
  feature.pm?
- (remember, not every feature needs to be in a
  version bundle)

- use    experimental
:=
use experimental ‘bind_op’;

my $y = “Foo bar”;
my $x := $y;
:=
use experimental ‘bind_op’;

my $y = “Foo bar”;
my $x := $y;


Feature “experimental_bind_op” is
not supported by Perl 5.22.0
Strategy of Last Resort
Strategy of Last Resort

- the change is controversial
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
- and can or can't go into feature.pm
Strategy of Last Resort

- the change is controversial
- and can't be prototyped on CPAN
- and can or can't go into feature.pm
- how do we decide?
The Final Decision
The Final Decision
- is the feature small and specific?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
- what's the maintenance burden?
The Final Decision
- is the feature small and specific?
- is the feature generic and unsurprising?
- is the feature teachable?
- what's the maintenance burden?
- does it feel like it makes Perl more Perlish?
Perlishness
Perlishness


- I know it when I see it.
Perlishness


- I know it when I see it.
- "gets us further along our road map"
The Road Map
The Road Map

- I don't make one.
The Road Map

- I don't make one.
- I don't see the point. I don't implement
  perl.
The Road Map

- I don't make one.
- I don't see the point. I don't implement
  perl.
- Submitted patches are the roads
Pathfinding
Pathfinding
- Backward compatibility
Pathfinding
- Backward compatibility
- POLS
Pathfinding
- Backward compatibility
- POLS
- Utility
Pathfinding
- Backward compatibility
- POLS
- Utility
- Conceptual simplicity
Pathfinding
- Backward compatibility
- POLS
- Utility
- Conceptual simplicity
- Readability
Intelligent Design
Intelligent Design

- always the best way to build something
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
- and omnipotence
Intelligent Design

- always the best way to build something
- assuming sufficient intelligence
- and omnipotence
- i.e., great if you're God
Evolution
Evolution
- seems to have worked pretty well
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
- and all those extinct species
Evolution
- seems to have worked pretty well
- except for the billions of required deaths
- and millions of years
- and all those extinct species
- and I still ended up with an appendix
Intelligent Evolution
Intelligent Evolution

- mutations are designed, not random
Intelligent Evolution

- mutations are designed, not random
- then further mutated in captivity
Intelligent Evolution

- mutations are designed, not random
- then further mutated in captivity
- and possibly slaughtered before reaching the
  wild
Recovering from Error
Oops
Oops

- so, Rik had to decide something
Oops

- so, Rik had to decide something
- and he made the wrong choice
Oops

- so, Rik had to decide something
- and he made the wrong choice
- and everybody can tell
Oops

- so, Rik had to decide something
- and he made the wrong choice
- and everybody can tell
- and he wants to fix it up so the new
  smartassign operator is not legacy
Experimental?
Experimental?

- was it marked experimental?
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
Current Experiments
Current Experiments

- fork emulation
Current Experiments

- fork emulation
- lvalue subroutines
Current Experiments

- fork emulation
- lvalue subroutines
- weak references (!?)
Experimental?
Experimental?

- was it marked experimental?
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
Experimental?

- was it marked experimental?
- if so, we can just remove the thing
- ...in theory
- if not, we'll do a deprecation
Deprecation Cycle
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
3. keep issuing them in 5.20
Deprecation Cycle

1. (optional) announce in 5.16 delta that we'll
   probably deprecate a behavior next time
2. start issuing warnings in 5.18
3. keep issuing them in 5.20
4. remove the behavior in 5.22
The Eternal Bug
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
- arybase feature: we could remove it
The Eternal Bug

- some behaviors can't be detected and made
  fatal practically
- arybase feature: we could remove it
- The Unicode Bug...
The Unicode Bug
The Unicode Bug


my $x = acquire_input;
The Unicode Bug


my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute
The Unicode Bug


my $x = acquire_input;

$x .= “Á”; # <-- that’s an A-acute

print $x =~ /á/i ? ‘match’ : ‘no match’;
Features in Flight
pluggable syntax
(the MOP)
regexp class sets
regex class sets


$str = /A
  (?[a-z] - [aeiou])
z/x
casemod escapes
casemod escapes
casemod escapes

$input = <STDIN>;
casemod escapes

$input = <STDIN>;
# ricardo
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
# Ricardo
casemod escapes

$input = <STDIN>;
# ricardo
# RICARDO
# Ricardo

$str   = “uL$input”; # Ricardo
casemod escapes
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})

qr<LN{LATIN CAPITAL LETTER A}>
casemod escapes
$let = “LN{LATIN CAPITAL LETTER A}”;
# $let is now ‘a’

$let =~ /LN{LATIN CAPITAL LETTER A}/;
# fails!!

qr<N{LATIN CAPITAL LETTER A}>
# (?^u:N{U+41})

qr<LN{LATIN CAPITAL LETTER A}>
# (?^u:n{u+41})
ÅÂÃÄÉÃ
EBCDIC
smartmatch
The Future of ~~
The Future of ~~

- deprecate and remove?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
- leave as is with giant warning sign?
The Future of ~~

- deprecate and remove?
- make pluggable with simple replacement?
- leave as is with giant warning sign?
- and then what about given/when?
magic flags
utf8 strictness
(??{{ ... }})
The Secret Roadmap
slim core
multiple cores
fatal implicit close()
fatal implicit close()
fatal implicit close()

{
fatal implicit close()

{
    use autodie;
fatal implicit close()

{
    use autodie;
    open my $fh, ‘>’, $filename;
fatal implicit close()

{
    use autodie;
    open my $fh, ‘>’, $filename;
    $fh->print( ... );
fatal implicit close()

{
  use autodie;
  open my $fh, ‘>’, $filename;
  $fh->print( ... );
} # should die if close fails!
better exceptions
better exceptions

my $x = try {
  $y / $z
} catch {
  return $Infinity
    if $_->tagged(‘divbyzero’);
  die $_;
}
MOP and pluggable OO
chars v. bytes
chars v. bytes
chars v. bytes

my $buf = $fh->readline;
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );
chars v. bytes

my $buf = $fh->readline;

my $str = decode_utf8($buf);

STDOUT->print( $str );
# fatal or autoencode
autoboxing
autoboxing
autoboxing

@array->push(@list);
autoboxing

@array->push(@list);

$arrayref->push(@list);
autoboxing

@array->push(@list);

$arrayref->push(@list);

for ($x->values) { ... }
Any questions?
Thank you!

Contenu connexe

Similaire à Perl 5: Today, Tomorrow, and Christmas

Similaire à Perl 5: Today, Tomorrow, and Christmas (9)

A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teams
 
OOD - Object orientated design
OOD - Object orientated designOOD - Object orientated design
OOD - Object orientated design
 
Modern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl ProgrammerModern Perl for the Unfrozen Paleolithic Perl Programmer
Modern Perl for the Unfrozen Paleolithic Perl Programmer
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyond
 
From Jurassic Park to Microservices
From Jurassic Park to MicroservicesFrom Jurassic Park to Microservices
From Jurassic Park to Microservices
 
An intro to the JAMStack and Eleventy
An intro to the JAMStack and EleventyAn intro to the JAMStack and Eleventy
An intro to the JAMStack and Eleventy
 
Emacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, againEmacs verilog-mode is coming to Debian, again
Emacs verilog-mode is coming to Debian, again
 
Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)Audio and Video for Blogging (See: Podcasting)
Audio and Video for Blogging (See: Podcasting)
 

Plus de Ricardo Signes

Dist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN DistributionsDist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN Distributions
Ricardo Signes
 
Perl 5.12 for Everyday Use
Perl 5.12 for Everyday UsePerl 5.12 for Everyday Use
Perl 5.12 for Everyday Use
Ricardo Signes
 
Antediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix FundamentalsAntediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix Fundamentals
Ricardo Signes
 

Plus de Ricardo Signes (10)

What's New in Perl? v5.10 - v5.16
What's New in Perl?  v5.10 - v5.16What's New in Perl?  v5.10 - v5.16
What's New in Perl? v5.10 - v5.16
 
Dist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN DistributionsDist::Zilla - Maximum Overkill for CPAN Distributions
Dist::Zilla - Maximum Overkill for CPAN Distributions
 
Perl 5.12 for Everyday Use
Perl 5.12 for Everyday UsePerl 5.12 for Everyday Use
Perl 5.12 for Everyday Use
 
i &lt;3 email
i &lt;3 emaili &lt;3 email
i &lt;3 email
 
Dist::Zilla
Dist::ZillaDist::Zilla
Dist::Zilla
 
Antediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix FundamentalsAntediluvian Unix: A Guide to Unix Fundamentals
Antediluvian Unix: A Guide to Unix Fundamentals
 
Perl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally InsanePerl 5.10 for People Who Aren't Totally Insane
Perl 5.10 for People Who Aren't Totally Insane
 
Writing Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::CmdWriting Modular Command-line Apps with App::Cmd
Writing Modular Command-line Apps with App::Cmd
 
Crafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterCrafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::Exporter
 
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
How I Learned to Stop Worrying and Love Email::: The 2007 PEP Talk!!
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

Perl 5: Today, Tomorrow, and Christmas