Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^3: How does one learn perl programming efficiently - if they do not come from computer science background? (Data Structure References)

by eyepopslikeamosquito (Archbishop)
on Nov 28, 2016 at 06:54 UTC ( [id://1176684]=note: print w/replies, xml ) Need Help??


in reply to Re^2: How does one learn perl programming efficiently - if they do not come from computer science background?
in thread How does one learn perl programming efficiently - if they do not come from computer science background?

> I found that if I got the data structures correct, the code usually flowed. If not, things got messy fast.

This reminds me of some famous quotes from Fred Brooks, Rob Pike, Eric S. Raymond, and Linus Torvalds:

The programmer at wit's end for lack of space can often do best by disentangling himself from his code, rearing back, and contemplating his data. Representation is the essence of programming.

-- from The Mythical Man Month by Fred Brooks

Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

-- Rob Pike

Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won't usually need your code; it'll be obvious.

-- Eric S. Raymond

I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

-- Linus Torvalds

Perl Data Structure References

  • Tie::Hash - base class definitions for tied hashes

  • YAML - YAML Ain't Markup Language
  • JSON - JSON (JavaScript Object Notation) encoder/decoder
  • JSON::MaybeXS - Use Cpanel::JSON::XS with a fallback to JSON::XS and JSON::PP
  • TOML - Parser for Tom's Obvious, Minimal Language
  • TOML Spec (github)

  • Sereal - Fast, compact, powerful binary (de-)serialization
  • SerealX::Store - Sereal based persistence for Perl data structures
  • Config::Any - Load configuration from different file formats, transparently
  • Config::Tiny - Read/Write .ini style files with as little code as possible
  • Config::INI - simple .ini-file format

  • Data::Dumper - stringified perl data structures, suitable for both printing and eval
  • Data::Dump - Pretty printing of data structures

Perl 4 multidimensional array emulation:

  • perlvar - if you refer to a hash element as $foo{$a,$b,$c} it really means $foo{join($;, $a, $b, $c)} ... where $; is the subscript separator for multidimensional array emulation aka $SUBSUP (default \034), borrowed from awk

  • feature - note that Perl 5.34+ allows you to disable this old Perl 4 multidimensional array emulation via the 'multidimensional' feature
  • perl 5.36 delta - ... and that use v5.36; disables multidimensional array emulation
  • Whats new in Perl (youtube) by Ricardo Signes (TPC 2021) uses What is this madness? to describe this unfortunate multidimensional mis-feature :-)

See Also

Build and Test Automation References:

Updated: Many extra references added long after the original reply was made.

  • Comment on Re^3: How does one learn perl programming efficiently - if they do not come from computer science background? (Data Structure References)
  • Select or Download Code

Replies are listed 'Best First'.
Re^4: How does one learn perl programming efficiently - if they do not come from computer science background?
by Your Mother (Archbishop) on Nov 29, 2016 at 03:04 UTC

    I knew the Raymond quote because it’s used as a chapter intro in some Perl book or another. I didn’t know the others. Good to see them.

Re^4: How does one learn perl programming efficiently - if they do not come from computer science background?
by jmlynesjr (Deacon) on Nov 29, 2016 at 01:48 UTC

    Great quotes! "The Mythical Man Month" should be required reading.

    James

    There's never enough time to do it right, but always enough time to do it over...

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1176684]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (2)
As of 2026-04-16 20:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.