SlideShare uma empresa Scribd logo
1 de 261
Baixar para ler offline
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!

Mais conteúdo relacionado

Semelhante a Perl 5: Today, Tomorrow, and Christmas

Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teamsSven Peters
 
OOD - Object orientated design
OOD - Object orientated designOOD - Object orientated design
OOD - Object orientated designRuberto Paulo
 
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 ProgrammerJohn Anderson
 
Perl 5.16 and beyond
Perl 5.16 and beyondPerl 5.16 and beyond
Perl 5.16 and beyondJesse Vincent
 
From Jurassic Park to Microservices
From Jurassic Park to MicroservicesFrom Jurassic Park to Microservices
From Jurassic Park to MicroservicesSven Ruppert
 
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 EleventyLuciano Mammino
 
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, againKiwamu Okabe
 
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)kris_smith
 

Semelhante a Perl 5: Today, Tomorrow, and Christmas (8)

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)
 

Mais de Ricardo Signes

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.16Ricardo Signes
 
Perl 5.14 for Pragmatists
Perl 5.14 for PragmatistsPerl 5.14 for Pragmatists
Perl 5.14 for PragmatistsRicardo 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 DistributionsRicardo Signes
 
Perl 5.12 for Everyday Use
Perl 5.12 for Everyday UsePerl 5.12 for Everyday Use
Perl 5.12 for Everyday UseRicardo 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 FundamentalsRicardo Signes
 
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 InsaneRicardo Signes
 
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::CmdRicardo Signes
 
Crafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterCrafting Custom Interfaces with Sub::Exporter
Crafting Custom Interfaces with Sub::ExporterRicardo Signes
 
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!!Ricardo Signes
 

Mais de Ricardo Signes (11)

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
 
Perl 5.14 for Pragmatists
Perl 5.14 for PragmatistsPerl 5.14 for Pragmatists
Perl 5.14 for Pragmatists
 
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!!
 

Último

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Último (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

Perl 5: Today, Tomorrow, and Christmas