Last update: Feb 06, 2012 at 05:00 UTC
Comments on the tutorial itself:
- All of the material currently in your "introduction" is footnote material. I'd move it into an actual footnote. And write a real introduction explaining what the tutorial is about! Don't just jump straight into code, expecting the reader to deduce what he's learning about.
- Make your code look good at standard wrapping widths, e.g. as Anonymous Monk would see the node. As it is, the "Comment" comments wrap; it looks really bad. I think I'd put the "Comments" on their own lines, either above or below the associated code line.
- Consider giving each comment a meaningful ID (like a variable name?) rather than just a number. But this is minor.
If we are going to convert this meditation directly into a tutorial, rather than having you repost:
- Delete the paragraph at the top, in which you provide context on the origin of the post. It's way too old for anyone to care now.
- Delete the last two paragraphs (after your signature). Again - no one cares about the edits you made back then. It would be one thing if we needed to maintain context for any comments on the post... but there aren't any!
All that being said - I'm not sure this is Tutorials-quality, in the sense that you're really just showing a very specific technique for accomplishing a very arcane task. I'd say it's a better fit for the Cool Uses for Perl section, frankly.
It's certainly very cool; I don't mean to take that away from it at all.
As for your other -- RFC Tutorial - Deleting Excel Rows, Columns and Sheets -- It looks really good to me. I'd post it in Cool Uses for Perl ASAP! (Or in Meditations. If you post it in CUFP, modify the title appropriately.)
my $total_population = $generations{$_};
$total_population += $generations{$_ - 1} if $generations{$_ - 1};
$total_population += $generations{$_ - 2} if $generations{$_ - 2};
store this in a .vbs file, e.g. eject_drives.vbs.
run directly as a command. windows knows how to execute .vbs files.
dim sh, f, i, v
set sh = CreateObject("Shell.Application")
set f = sh.NameSpace(17) 'My Computer'
for each i in f.Items
' MsgBox i.Name & "=" & i.Type
if (i.Type = "CD Drive") then
for each v in i.Verbs
if (v.Name = "E&ject") then
v.DoIt()
end if
next
end if
next
use List::Util qw( shuffle );
use strict;
use warnings;
my @upper = 'A'..'Z';
my @lower = 'a'..'z';
$_ = "What That April With His Shoures Soote
The Drought Of Marche Hath Perced To The Roote
";
$" = '';
eval "y/@upper@lower/@{[shuffle @upper]}@{[shuffle @lower]}/";
print
This code appears in the Perl Cookbook, 2nd Ed., and was allegedly taken from Mastering Regular Expressions.
It alleges properly to parse quoted CSV fields with embedded commas and double-quotes, but my test of this utterly fails.
sub parse_csv1 {
my $text = shift; # record containing comma-separated values
my @fields = ( );
while ($text =~ m{
# Either some non-quote/non-comma text:
( [^"',] + )
# ...or...
|
# ...a double-quoted field: (with "" allowed inside)
" # field's opening quote; don't save this
( now a field is either
(?: [^"] # non-quotes or
|
"" # adjacent quote pairs
) * # any number
)
" # field's closing quote; unsaved
}gx)
{
if (defined $1) {
$field = $1;
} else {
($field = $2) =~ s/""/"/g;
}
push @fields, $field;
}
return @fields;
}
Test:
my @f = parse_csv1('first,"second","thi,rd","fou""rth"');
print "$_\n" for @f;
Output:
first
second
thi
rd
fou
rth
WTF?
Solution:
The problem is on line 15:
( now a field is either
Because the /x switch is in effect, the programmer can, and did, embed comments within the regex.
But there is no way for the compiler to check when a # has been accidentally omitted!
Change the line to:
( # now a field is either
IIRC, credit for finding this bug goes to ikegami, and possibly ambrus as well. Thanks, guys!
A couple ideas for styling threads when the
"Lay out threads as <div> instead of <table>" setting is enabled:
/* a basic one: */
div.header { background-color: #EEE; padding: 3px; border-bottom: 1px
+solid blue; }
ul.replies:before { content: url(http://perlmonks.org/images/bubbles.p
+ng) }
ul.replies { list-style-type: none; padding-left: 40px; }
li.reply { border: 1px solid blue; }
/* a fun one: */
div.header { background-color: #DFB; padding: 3px; }
ul.replies:before { content: url(http://perlmonks.org/images/bubbles.p
+ng) }
ul.replies { border-left: 2px solid red; padding: 3px; list-style-type
+: none; padding-left: 20px; }
li.reply { border-top: 2px solid blue; padding: 3px; }
/* both will need something like this: */
div.comment-on { text-align: center; font-size: larger; background-col
+or: #DFB; }
<jcw> Jebus, I can't type.
<jcw> Perhaps a typing exercise would help.
*<* zdog has been kicked off channel #perlmonks by jcw (The quick brow
+n fox kicked over the whining dog)
<jcw> Yea, that worked.
*<* Signoff: castaway (Ping timeout)
*<* Signoff: theorbtwo (Ping timeout)
<jcw> 3 for the price of 1!
{
package Foo;
use overload '""' => \&as_string;
sub as_string { "Foo!" }
}
$_ = bless {}, 'Foo';
/(.*)/ and print "$1\n";
# does this print "Foo!" or "Foo=HASH(0xdeaded)"?
Special Characters in Unicode
Source: Mapping of Unicode characters
Character Name | Code point (hex) | Character between two Zeroes |
Word Joiner | ⁠ | 00 |
Zero-width joiner | ‍ | 00 |
Zero-width non-joiner | ‌ | 00 |
Zero-width space | ​ | 00 |
Zero-width no-break space |  | 00 |
Combining Grapheme Joiner | ͏ | 0͏0 |
Invisible Separator | ⁣ | 00 |
Invisible Times | ⁢ | 00 |
Function Application | ⁡ | 00 |
Space |   | 0 0 |
En Quad |   | 0 0 |
Em Quad |   | 0 0 |
En Space |   | 0 0 |
Em Space |   | 0 0 |
Three-Per-Em Space |   | 0 0 |
Four-Per-Em Space |   | 0 0 |
Six-Per-Em Space |   | 0 0 |
Figure Space |   | 0 0 |
Punctuation Space |   | 0 0 |
Thin Space |   | 0 0 |
Hair Space |   | 0 0 |
Left-to-Right Mark | ‎ | 00 |
Mathematical Space |   | 0 0 |
Soft Hyphen | ­ | 00 |
Non-breaking Hyphen | ‑ | 0‑0 |
No-break Space |   | 0 0 |
Narrow No-break Space |   | 0 0 |
Zero-width space | ​ | 00 |
Line separator | 
 | 0
0 |
Paragraph separator | 
 | 0
0 |
horizontal tab | 	 | 0 0 |
linefeed | 
 | 0
0 |
carriage return | 
 | 0
0 |
newline | … | 0
0 |
Gvim commands for using folds to browse Perl
data structures generated by Data::Dumper, given that
$Data::Dumper::Indent=1;
:set shiftwidth=2
:set foldcolumn=8 (not important)
:set foldmethod=indent
:1,$foldopen! (to open all folds)
use Tk::FileSelect;
use Data::Dumper;
use strict; use warnings;
my $mw = new MainWindow;
my $fs = $mw->FileSelect( -directory => '.' );
$fs->configure(-verify => ['-d'] );
print "$_: ",$fs->Subwidget($_),"\n" for
'dir_entry', # LabEntry
'file_entry', # LabEntry
'dir_list', # ScrlListbox
'file_list', # ScrlListbox
'dialog' # Dialog
;
my %ch;
$ch{$_} = $_ for $fs->children;
delete $ch{$_} for $fs->Subwidget;
my( $fr ) = @ch{ grep /Frame/, keys %ch };
my $b = $fr->Button( -text => "New Dir", -command => \&new_dir, );
$b->pack( -side => 'top', -fill => 'x', -expand => 1, );
my $file = $fs->Show;
die "> $file\n";
sub new_dir
{
$fs->Subwidget('dir_entry')->validate;
# note that this is the current "accepted" directory name from the
# dir entry. It may not be the name of an existing directory!
# but it will NOT have a trailing /* even if displayed.
# it's possible to wangle the direntry into a state where it
# has two slashes before the * and/or letters between
# the / and * for example: /x//* /x/y* /x//y*
# In all cases, the slash (both slashes, if present) up
# through the star are excluded from the value of -directory.
my $dir = $fs->cget('-directory');
print "Make a new dir under $dir !\n";
my $new_dirname = Prompt("Enter new folder name:"); # wave hands
my $new_dir = "$dir/$new_dirname";
mkdir $new_dir;
$fs->Accept_dir($new_dir);
}
Mysterious Posts
Mysterious
Mysteriously
Mystery
Mystify
Wall of Shame: Plagiarists In Residence
The sad, unfortunate fact is that not all of the registered users
of this site are playing with a full deck, scruples-wise.
In particular, two monks — jesuashok and madtoperl —
have routinely posted material by other authors stolen from other sites;
in each case, proper attribution of authorship was studiously avoided; and in many
cases the plagiarist explicitly claimed the work was original.
I'm not trying to single out these folks. They are simply a couple known, currently active plagiarists.
If you discover any other recent or new plagiarisms, please notify me, liverpole, planetscape, chargrill, or shmem (the Plagiarism Posse).
Keep in mind that usernames are not important; people can always create new user accounts to hide behind.
Rather, we want to educate any offenders — the people behind the usernames — that plagiarism is not cool and not acceptable.
Advice to moderators:
- Do not approve posts which are known to be plagiarisms.
In the case of posts by known habitual plagiarists such as madtoperl and jesuashok, err on the side of caution. Don't approve until the question has been settled. At this point, we have little reason to believe that jesuashok knows anything about how to program in perl, nor that madtoperl could write an original poem. For example.
- If possible, unapprove any plagiaristic posts which have already been approved.
Advice to monks:
- Down-vote plagiaristic posts. It's a shame that these liars have gotten beaucoups XP for posts that they did not put any original work into, nor (in the case of perl code) even understand.
Relevant PMD: How should Perlmonks deal with Plagiarism?
Some relevant discussion followed 571926, including accusations of plagiarism, followed by protestations of innocence.
Responses to questions in the Chatterbox
package SNMPfu;
# pass an object which is either a Net::SNMP object
# (as returned by Net::SNMP->session) or an SNMP::Session
# object (as in the SNMP module/dist).
sub wrap
{
my $obj = shift;
bless $obj, __PACKAGE__ . '::' . ref $obj; # rebless
}
package SNMPfu::Net::SNMP; # wrapper for Net::SNMP
use base 'Net::SNMP';
sub get # wraps Net::SNMP::get_request
{
my( $self, $var_id ) = @_;
my $r = $self->get_request( -varbindlist => [$var_id] );
defined $r or die $self->error;
$r->{$var_id}
}
package SNMPfu::SNMP::Session; # wrapper for SNMP::Session
use base 'SNMP::Session';
sub get # wraps SNMP::Session::get
{
my( $self, $var_id ) = @_;
$self->get($var_id) # but I'm not sure this correct. Illustration
+only.
}
1;
In user code:
my $sess = Net::SNMP->session( ... );
# or:
my $sess = SNMP::Session->new( ... );
SNMPfu::wrap( $sess );
my $val = $sess->get('sysDescr.0');
By reblessing, we divert all method calls on the object into
one of the wrapper classes we've written.
By making those wrapper classes inherit from the original
class of the object, the user can call "native" methods of
the object if she chooses. If we wish to disallow that, just
take out the 'use base' lines.
my $sh = new Win32::OLE 'Shell.Application' or die;
my $folder = $sh->NameSpace( $directory_path ) or die;
my $item = $folder->ParseName( $unqualified_filename ) or die;
$item->InvokeVerb('Edit');
Put the following code in a file named cdrom_drives.js
Execute it with the command
cscript /nologo cdrom_drives.js
/*
* cdrom_drives.js
* by jdporter
*/
var sh = WScript.CreateObject('Shell.Application');
var a = new Array();
var i;
for ( i = 65; i < 75; i++ ) { // test the first 10 drive letters
var p = String.fromCharCode(i,58,92); // letter + colon + backslas
+h
try {
var fi = sh.NameSpace(p).Self; // will throw if bad path
if ( fi.IsFileSystem && fi.Type == 'Compact Disc' ) a.push(p);
}
catch(e) {
}
}
WScript.Echo(a.join("\n"));
Odds and Ends
Get the total reputation of all your nodes.
use LWP::Simple;
use XML::Simple;
use strict;
my( $username, $password );
print "Username: "; chomp( $username = <> );
print "Password: "; chomp( $password = <> );
$username && $password or die "Abort.\n";
my $t = XMLin get "http://perlmonks.org/?node_id=32704;op=login;user=$
+username;passwd=$password;ticker=yes";
my $total;
my $n;
while ( my( $id, $hr ) = each %{ $t->{'NODE'} } )
{
$total += $hr->{'reputation'};
$n++;
}
print "$total rep in $n nodes\n";
Get a list of "other users" currently active in the Monastery, and their XP
use LWP::Simple;
use strict;
*a = \"http://perlmonks.org/?node_id";
printf qq
m%2d %7d %s\nm,m
leve.="(\d+)"l,m
exp="(\d+)"e,m
foruser="([^"]+)"ffor map get qq
m$a=16046;for_userid=$_m,map m
user_id="(\d+)"ug,get qq
m$a=15851m;
What's with all the "buddha" usernames?
Wacky. And then there's
HTML for a form with which someone (such as yourself) can send you a msg
This snippet can be put anyplace on PerlMonks where HTML forms are allowed, including
your homenode or in your Free Nodelet.
You must replace "jdporter" with your username, and 170442 with your user id (which is your homenode's node_id).
<form method="post" action="?" enctype="application/x-www-form-urlenco
+ded">
<input type="hidden" name="node_id" value="170442">
<input type="hidden" name="op" value="message">
<input type="hidden" name="replyto" value="user">
<input type="hidden" name="sendto" value="jdporter">
<input type="text" name="replytotext" size=60 maxlength=255>
<input type="hidden" name="sexisgood" value="submit">
</form>
How to using folds in Vim to browse Data::Dumper output
$Data::Dumper::Indent=1 is a prerequisite.
- :set shiftwidth=2
- :set foldcolumn=8 (actual value not critical)
- :set foldmethod=indent
- :1,$foldopen! to open all folds, since they're initially closed.
One of the patterns I see frequently goes like this:
- you say something that strongly and clearly implies X;
- other monk disagrees with you about X;
- you claim you never said X.
It's weasely, and intellectually dishonest. I don't care so much that you do that (you and I are strangers, after all), but I do care about the fact that it invariably and unnecessarily raises the noise level here by a significant amount. Sometimes I think you do it just for the joy of the fray.
Now, of course, you may -- and I fully expect you to -- say I'm mistaken about any or all of the above. But you have to ask yourself: Why do people so routinely misunderstand me? If you truly believe people aren't understanding your true opinion on something, I'd suggest (1) stating clearly and unambiguously -- and that means (among other things) without sarcasm, since that is so easily missed in this medium; and (2) maintaining your position with as much consistency as possible.
Below is the list of node links collected by clicking "Add to public pad" in my Personal Nodelet:
Help for User Settings
Aristotle
For Beginners: Basic Information Resources (or, Where to Look Things Up)
On finding the Perl Wisdom
ybiC
Nodelet types, uses, and (relative) usefulness
Welcome to the Monastery! Make yourself at home.
Spirit of the Monastery
Louis_Wu
Being a monk: why you'll love it, why you'll hate it
Site Comments.
PerlMonks for the Absolute Beginner
Forum or Knowledge-Base ?
A reflection or two on PM life
Perl $^O values for various operating systems
The Threading Dilemma
Are "PM Discussions" only to be technical?
About Perlmonks: How would you describe PM?
Why does PerlMonks work?
Where and how to start learning Perl
fast, flexible, stable sort
Keyword Nodelet / Tagging documentation
Re: Humorous Module Ideas
Real DJs Code Live (from Wired)
turnstep
PerlMonks as Ambassadors
The next step
How to get the most of your question from the monks
Help for new monks
New Monks
New Monks Info Page
broquaint
Add Entries to vroom's Book List
Re: Rethrowing with die $@ considered harmful (local $_ buggy)
Re: Name Space
Pumpkins are best used for...
Re^2: Unused accounts zombified
Re: How can I create an UTF8 encoded txt file contains strings like "aaaa"?
Conversion from UTF-8 to windows-1256 encoding
Re: Restrictions of the Anonymous Monk
Free Nodelet Settings
Making Perl Monks a better place for newbies (and others)
Ignored Users
Wow, stuff got inserted above, not below!
jdporter's treehouse
by jdporter (Chancellor) on Jul 20, 2005 at 22:01 UTC
|
Warning: This thread can be slow to load, as it contains several very large nodes.
You should probably link to the individual children of this node instead.
| [reply] |
|
This node will only be of interest to pmdev.
This node summarizes the current modes of implementing web page style on PerlMonks.
Some is done with CSS (attributes class and id), while
some — entirely too much — is done using "hardcoded" stylistic controls
such as <font size>, color and bgcolor.
I did this research for the purpose of determining where more conversions to CSS
should be done. Ultimately, we may find that not all "hardcoded" styles can be
converted to CSS. For example, a few pages achieve special gradient effects by
calculating and embedding color numbers. It may turn out that such color gradients
will be acceptable in any user color scheme; or, perhaps, the "control" numbers
(i.e. color start and end points in a gradient) can be opened up for customization
in the user's Display Settings.
The task of determining what code does it which way could be approached from two ends:
we could search the code nodes for occurrences of the bgcolor (etc.) strings,
or we could fetch actual web pages and parse them for such things. The former approach
has two problems: attributes are not inserted in code in a consistent way (for example,
we might find bgcolor='$color' or bgcolor = "#ff0000" or the
CGI-style { -bgcolor => $bgcolor }); and more critically, there is tons
of "dead code". Not only do we not care about what dead code has, but very often it is
difficult or impossible to tell which of several variants is the "good" one. Therefore,
I have taken the approach of fetching web pages, and parsing them for relevant attributes.
Below is an index of all the nodes I used in this survey. (Please note — this is in
no way an index of interesting posts! You will not find any PMDs or Meditations here!
And for this purpose, "posts" includes pages in the PerlMonks FAQ and the Library.)
Some node types (in particular, "posts" in the various sections, FAQ and
Library) are guaranteed to have invariant format, so for those types we only need one
example of each.
Since the idea is to illustrate every displayable node format, we don't list nodes of
"indirect" types, such as htmlcode.
Since every SuperDoc is unique, we list them all. (Actually, not quite all. I have excluded those to which I am not permitted access, and those which have null or broken content/functionality.) I have grouped them by functional style/role.
Postable "Sections":
Settings:
Interactive functions: (These present a form of some kind)
Interactive results: (you would be brought here from somewhere else)
Non-interactive results: (could change from one fetch to the next)
Documents: (essentially static; might pull a small bit of data out of another relatively static record)
Misc:
In fullpage chat, called with displaytype=raw:
XML generators:
SectionContainers are obsolete, but this one is interesting
because it illustrates the use of the .paneled css class.
Documents do not have 'code', and the 'viewcode' displaytype does not work for them.
AFAICT, there is no code (no dynamic content generation) behind any of these.
In fact, most of the other displaytypes don't work for Document either. Therefore,
these are listed for curiosity only; we couldn't fix them even if we found a problem.
(Gods could, however.)
We take one example of each of the following nodetypes:
This list is instrumental in my ongoing work to convert the site to CSS.
It serves as a test suite and a live running status of the changes made.
As we make changes — often to htmlcode buried ten layers deep — we
need a good way of determining that the appropriate changes are happening on the surface.
At the same time, this suite tells us (or gives us a good idea, anyway) of what exactly remains to be done,
with regard to replacing hard-coded stylings with CSS.
For this endeavor, we need someone who understands html and css.
I've got a pretty good (though far from perfect) handle on the code;
but my comprehension of the subtleties of CSS is woefully inadequate.
And when it comes to having a coherent web site "design", well... I'm a geek, not an artist.
So here's how I plan to use this list. I'm going to suck down a copy of each page listed here,
and grep through it for any css classes/ids used,
as well as for any of the kind of markup we want to eliminate, i.e. hardcoded colors and the like
(e.g. bgcolor, font).
This tells us (a) what css elements we actually need to account for in the site css pages, and
(b) what hardcoded stylings remain to be eliminated (replaced with css).
We'll re-run this after each round of relevant patching.
From the other side, someone needs to look at all the css nodes, and
make a list of all the css classes/ids defined there, and
do code searches for them. This is to build our understanding of how the
site's design is currently structured; plus we'll be able to identify any
styles defined but unused.
Thirdly, someone needs to go to the theme nodes, and
get a list of all theme "variables" defined, and
find every occurrence of usage of them in (non-dead) code.
This is mainly just to ensure that we don't let any fall through the cracks.
Identifying which actually need to be replaced is accomplished by step 1, above.
And fourthly and most importantly,
someone with some sense of design and a pretty good understanding of css
should define an overarching style "architecture" for the site.
Ideally, we'd like to be able to make some fairly radical changes, e.g.
make much less use of tables for layout.
[Petruchio]:
Back in the day, the version control system here consisted of the "back" button on a god's browser. |
[Corion]: I guess it's more about the conveyed structure than about the screen real estate. The question is bigger (= more important) than the answers |
[tye]: and it is also about the poor model used for selecting font size (yes, even in modern CSS, for the koolaid drinkers present) |
[tye]: adding a css target as a first step is a great idea. there will be heart burn when we remove size="-1", but we should eventually do that anyway |
[tye]: CSS lets you pick font size relative to inherited font size in several ways. But they all apply to font /height/, even if derived from a font /width/. The default should be to select font on something that better matches /perceived/ size... |
[tye]: more like "cell volume" or "diagonal size" |
[tye]: the only reason size="-1" was added was because the text font and the code font at PM were the same "size" but, especially on some systems, the code /looked/ /much/ bigger |
Some relevant old PMD threads:
In the tables below, the first two list "all" occurrences of the attributes
class, id, bgcolor, color, size, and style in the above list of pages.
The "old" attributes (bgcolor, color, size, and style) are
listed in the first table; the "new" attributes (class and id) are in the second.
It's not really all, because I've excluded certain nodes which make heavy
or obsequious use of color (e.g. color gradients) and other silliness which would be
troublesome to reimplement in static CSS.
These pages were completely excluded:
All Superdocs of General Interest,
Modular Pascal's Triangle,
User Variables,
the Arcane and Esoteric History of the Monastery,
Recently Active Threads Faqlet.
As it is, not every node listed here really matters. For example, you can completely ignore
root's default themesettings and note settings, as they are not used anywhere.
Similarly, I've excluded certain CSS classes and
IDs used by certain pages, such as the huge family of nnt-* classes/IDs used by Recently Active Threads,
and (nearly) all generated classes/IDs, such as the node-from-* classes stuck on entries in Newest Nodes.
This excluded content is shown in the tables at the very bottom.
The first table shows what is still being implemented the old way. This represents work still ahead of us:
This table shows what's already been implemented with CSS. In some sense, it represents the part of our job already done:
Here's all the stuff that was skipped:
"many" means more than 70, which is about a third of the approx. 210 total nodes.
settings from Themes:
These are image file names:
- perlMonksTitleImg
- pollImage
- searchButtonImg
- talkButtonImg
These are colors:
- bodyBgColor
- bodyLinkColor
- bodyTextColor
- bodyVlinkColor
- titleBgColor
Note: clr_highlight is still being used in colorblend
(which is used in
RAT by way of handle_threaded_nodes
and in Big Pretty Nodelist)...
but it's harmless because colorblend generates a <style> section assigning color rules to classes; it does not hard-code colors.
Settings used in shownote:
- shownoteTextBgColor - still used for background of main body of notes. Default is #FFF.
- shownoteEndcolor - probably can't be elimated.
- shownoteStartcolor - probably can't be elimated.
Patches for this already exist.
To add the rule to the relevant CSS files, apply:
(Recall that CSS patches require manual sync to static files.)
Dark CSS already has the change.
Once those are done, patch shownote to remove the use of $textbgcolor.
In addition, shownote brings in the following from shownote settings:
- startcolor
- endcolor
- textbgcolor
These are fallback defaults if the Theme doesn't set these settings (which of course No Theme doesn't).
vote settings has a bunch of html snippet crap:
upLabel <tt>++</tt>
downLabel <tt>--</tt>
nullLabel <tt>+=0</tt>
showRepHeader <div class="reputation"><center><font size="1">
showRepFooter </font></center></div>
voteHeader <div class="vote"><center>
voteFooter </center></div>
These are all used in voteit, which is used in a lot of places.
Update: The above has been patched away. No more literal HTML in settings!
Other useful info:
...as demerphq called it, because it's largely his creation, and
he's been living in this view almost exclusively ever since.
He was hoping that it would be the basis for a new, cleaner Perlmonks.
How does it work?
The different look is achieved not simply through a different set of stylings.
When the PerlMonks engine renders a node, it does so through a set of templates (specifically, htmlpages and containers).
Petruchio created a new set of such templates.
Then he inserted a run-time check in certain key places,
so that whenever the domain name in the URL begins with "css",
the engine uses his new templates to generate the HTML rather than the standard templates.
No changes to index.pl (or any of the site's static engine code) were necessary.
Thread: Re: Hilighting Newest Nodes
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
1234567
| [reply] [d/l] [select] |
|
This is an index of popular PerlMonks nodes, as defined by monks "voting with their feet", i.e. by linking to them on their homenodes.
Note that only nodes linked to by id were tallied (specifically, using the [id://...] shortcut protocol).
The data were harvested from homenodes at
2005-10-05 21:18 UTC.
In case it matters to some people, the statistics were recalculated
with different users "counting more" based on various criteria:
how recently they were active, how long they've been a user,
how many nodes they've authored, and how many XP they have.
In all cases, the weighting scheme is normalized so that the
maximum extra weight (or "vote", if you want to think of it that way)
is capped at 1. That is, someone with no extra weight (a "worst case" user)
has 1 vote, and someone with maximum extra weight has 2 vote.
Note that this is a continuous scale. Someone in the middle
could have 1.573 vote.
The XP and numwriteups numbers were log-scaled, to make more difference
at the lower end of the scales. That is, the amount of additional
benefit for having more XP/writeups diminishes.
The usersince numbers are linearly scaled.
The lasttime ("last seen") numbers are scaled by an inverse-log formula,
which gives recently active users a huge benefit. (But remember, it's
never more than twice what a luser would have.)
The top 5% scoring nodes were selected for this index. This came to 20 nodes
in the unweighted case, and 21 nodes in the other four cases.
Votes uniformly weighted
One user, one vote.
Votes weighted by usersince
Gives more weight to users who joined PerlMonks longer ago.
Votes weighted by lasttime
Gives more weight to users who've been more recently active on PerlMonks.
Votes weighted by numwriteups
Gives more weight to users who've written more nodes.
Votes weighted by experience
Gives more weight to users with more XP.
Here's a different view of the same data: most popular homenode-linked nodes grouped by node type
Some type groups with long tails have had their tails chopped off.
For example, there were lots of Meditations with only 1 or 2 votes.
nodetype |
votes | node |
CUFP |
5 | Perlmonks Related Scripts |
4 | Vampire Numbers |
3 | Automatic Music with Perl |
3 | 1-D Cellular Automata |
3 | Perl Spots |
2 | PerlMonks StageNames! |
2 | CRSC |
2 | AutoSurfer cures boredom |
2 | A SpamAssassin-Enabled POP3 Proxy |
2 | XPFixation -- The Essential Windows XP Whoring Tool |
2 | Jaldhar is largely correct on this |
2 | XPAddiction -- a new XP whoring tool |
2 | drawmap.pl - Spot The Monk! |
2 | Get Out of a Dull Meeting |
2 | Yoda Speak Translator |
2 | Genetic Programming or breeding Perls |
2 | Das Email Blinkenlight |
2 | Talking Winamp RF remote control |
2 | STUMP - Simple Textual Unified Modeling in Perl |
2 | Triangle Numbers |
2 | Most loved nodes |
2 | Transcramble - Random text generator |
2 | pMusic - an MP3 player for disabled people |
2 | Extending MoveableType to support embedded Perl |
2 | Linear Fractal Generator |
2 | Non-threading Telnet/Mud client |
2 | (AOL bot) Confuse the heck out of everyone you know! |
2 | Votes in the pool |
2 | Acme::Translator |
bookreview |
1 | TOG On Interface by Bruce Tognazzini |
1 | Mastering Algorithms with Perl |
1 | The Mythical Man-Month |
1 | Pragmatic Programmer, The |
categorized answer |
1 | Re: Problems posting form info to a .asp site using LWP |
1 | Re: How do I use IPX |
1 | Re: How do I test whether a file has some contents or not? |
1 | Re: How can I find the union/difference/intersection of two arrays? |
1 | Re: I've got a hash of hashes how do i get my values out |
1 | Re: I need a simple web upload script. |
1 | Re: select function from Mail::IMAPClient |
1 | Re: How do I add commas to a number? |
1 | Re: Is it better to use off-the-shelf websites, or write my own? |
categorized question |
3 | What are placeholders in DBI, and why would I want to use them? |
1 | Is it computationally expensive to return a large string (50-100 kB) from a sub? |
1 | select function from Mail::IMAPClient |
1 | How can I create an array of filehandles? |
1 | How do I do a natural sort on an array? |
1 | How do I send e-mail from my Perl Program? |
1 | How can I visualize my complex data structure? |
1 | How do I recursively process every file in a given directory? |
1 | how do I remove a user or a group from a given directory? |
1 | Class Hierarchy Design |
css |
1 | Dark CSS |
devtask |
1 | pmdev task management tools |
document |
8 | Most Often Mentioned Modules |
1 | What section should I put this in? |
1 | editor tools status |
fullpage |
3 | Land of Monks and Honey |
2 | fullpage chat |
1 | XP xml ticker |
image |
1 | noisy sunset |
mail |
1 | We've missed you at Perl Monks |
modulereview |
2 | Quantum::Superpositions |
2 | CGI::Application |
2 | ExtUtils::ModuleMaker |
1 | Text::Template |
1 | Storable |
1 | cpan-upload |
monkdiscuss |
8 | The True Catacombs of Perlmonks |
7 | Death to Dot Star! |
6 | On Responsible Considerations |
6 | What makes a bad question? |
5 | Cool code for your home node |
5 | Node Tension |
5 | Suggestion/Requests. |
4 | PM Drinking Game |
4 | Perl Monks say the Darndest Things |
4 | Considering Super Search: the Sequel |
3 | Categorized best nodes |
3 | Best Nodes candidates |
3 | Considering Front Paging a Node? |
3 | Automate your PerlMonks activities |
3 | Random NonHome Nodes |
3 | Announcing the First Annual Perl Golf Apocalypse |
3 | Perlmonks silly hat week! |
nodeletgroup |
1 | all nodelets |
note |
5 | Re: Where/When is OO useful? |
5 | (tye)Re: A question of style |
4 | Re (tilly) 1: Why Use Perl? |
4 | Re: At what rate are YOU progressing? |
4 | Are debuggers good? |
4 | Re: Tutorial: Introduction to Object-Oriented Programming |
3 | Re (tilly) 1: Parallel PL execution |
3 | Merlyn's secret uncovered! |
3 | Re: Performance Question |
3 | Re (tilly) 1 (perl): What Happened...(perils of porting from c) |
3 | Re: Modules in the Windows environment |
3 | Fixed Point Numbers |
3 | references quick reference (Re: push) |
3 | Categorized Damian Modules |
3 | (Ovid: Death to Select Star!) Re: MySQL DBI Help |
3 | Re: Re: Perl falls victim to shifting trends(Opinions/Comments From The Other Side) |
obfuscated |
9 | camel code |
8 | Things are not what they seem like. |
4 | [OT] Perl Code Embedded in an Image |
3 | P(erl|ython) |
3 | I refuse to explain this |
3 | My first attempt at obfu |
3 | There can be only one! |
3 | Structured obfuscation |
3 | japhy's Obfuscation Review |
3 | spiraling quine |
perlcraft |
3 | Perl cheat sheet |
1 | html/file security cgi [revisited] |
1 | use deprecated; |
1 | Perl tags generator using the Debugger |
1 | Supersplit |
1 | CGI::Imagemap |
1 | perlfiles - list all the perl scripts in a directory |
1 | Mastermind Game |
1 | Creating Neat CVS snapshots... |
1 | Generate a Graph-ical call tree for your *.pm perl modules |
1 | Solver for Sunday Times teaser 2021 |
1 | Anti-Spam Mail Address Encoding (with encrypted IP-Address) |
1 | deletes timestamped logfiles (MMDDYY) based on actual time |
1 | "animal" |
1 | Archive::Ar - pure perl way to handle Ar archives (comments encouraged) |
perlfaq nodetype |
2 | How do I flush/unbuffer an output filehandle? Why must I do this? |
1 | What machines support Perl? Where do I get it? |
1 | How do I permute N elements of a list? |
1 | Perl Books |
perlfunc |
1 | perlman:Text::Wrap |
1 | perlman:Data::Dumper |
perlman |
1 | perlman:perlsyn |
1 | perlman:perlre |
1 | perlman:perlipc |
perlmeditation |
17 | Damian Conway's ten rules for when to use OO |
16 | Why I like functional programming |
13 | Random thoughts on programming |
12 | The path to mastery |
12 | DBI recipes |
10 | use CGI or die; |
10 | Life at the Monastery. Chapter 1 |
10 | Name Space |
8 | 1st Monasterians |
8 | My coding guidelines |
8 | brian's Guide to Solving Any Perl Problem |
8 | Advanced Sorting - GRT - Guttman Rosler Transform |
7 | 7 Stages of Regex Users |
7 | The fine art of database programming |
7 | Code Smarter |
7 | New Monks |
6 | Speeding up the DBI |
6 | Editing features for advanced users |
6 | How You (Yes You!) Can Get Involved |
5 | Vim for Perl developers |
5 | May Thy Closures Be Blessed |
5 | Perl Idioms Explained - keys %{{map{$_=>1}@list}} |
5 | Before asking a database related question ... |
5 | Perl Style Guides for Large Projects |
5 | Another commenting question, |
5 | Before You Post ... |
5 | (GUI) Windows Programming FAQ |
5 | Use strict warnings and diagnostics or die |
5 | Essential CGI Security Practices |
5 | Style geekcode |
5 | Where and how to start learning Perl |
5 | Shift, Pop, Unshift and Push with Impunity! |
5 | Refactoring: Soft-code class name in factory method |
5 | Suggestions for working with poor code |
5 | Automated software testing: emulation of interfaces using Test::MockObject |
5 | Class::InsideOut - yet another riff on inside out objects. |
5 | Spooky math problem |
5 | What you refuse to see, is your worst trap |
4 | Top Ten ways you know you are a Perl Monks Addict. |
4 | Golf Do-s and Don't-s |
4 | using CGI, DBI and HTML::Template (a mini tutorial with example code) |
4 | Life at the Monastery Chapter 2 |
4 | How to get the most of your question from the monks |
4 | Perl oddities |
4 | Often Overlooked OO Programming Guidelines |
4 | When to use Prototypes? |
4 | Arrays are not lists |
4 | PerlMonks Humor |
4 | Writing Solid CPAN Modules |
4 | Things you need to know before programming Perl ithreads |
4 | Any interesting philosophy of programming articles to recommend? |
4 | An informal introduction to O(N) notation |
4 | How a script becomes a module |
4 | (humor) The first rule of The XP club is... |
4 | Starting the development of a module : thoughts |
3 | Specializing Functions with Currying |
3 | MOPT-01 - assumptions and spaces |
3 | Favourite modules April 2003 |
3 | MOPT-04 - identification, part 2 |
3 | Devel::Dprof is your friend |
3 | Threads vs Forking (Java vs Perl) |
3 | Using CVS for revision control |
3 | Optimising processing for large data files. |
3 | Perl's pearls |
3 | Vim configs (slightly OT) |
3 | MOPT-03 - identification, part 1 |
3 | The best amputation possible: Perl proper as Closed Source software |
3 | A (memory) poor man's <strike>hash</strike> lookup table. |
3 | XSLT vs Templating, Part 2 |
3 | Virtues of Community |
3 | How to ask questions the smart way. |
3 | Second rate programmers and my confession |
3 | Perl Geek Code |
3 | The Lighter Side of Perl Culture (Part IV): Golf |
3 | What do you know, and how do you know that you know it? |
3 | Parsing with Perl 6 |
3 | Why is 'our' good? |
3 | Professional Employees and Works for Hire |
3 | The worst amputation possible: Perl proper as Open Source software |
3 | web site design, or lack thereof |
3 | Caffeine and its delivery to monks in need |
3 | Of Symbol Tables and Globs |
3 | MOPT-02 - substitution and formal systems |
3 | Perl and Prolog and Continuations... oh my! |
3 | [untitled node, ID 58043] |
3 | Web based password management (or how *not* to blame tye) |
3 | Perl Idioms Explained - $|++ |
3 | Premature optimization |
3 | XSLT vs Templating? |
3 | Favorite Perl 6 feature? |
3 | Perl Idioms Explained - ${\$obj->method} and @{[sort @list]} |
3 | Favourite modules March 2002 |
3 | (Kidding) XP-whoring HOW-TO |
3 | How's your Perl? |
3 | On Scalar Context |
3 | 'our' is not 'my' |
3 | The Joy of Test |
3 | Vim for PerlMonks nodes |
3 | Macros, LFSPs and LFMs |
3 | More Fun with Zero! |
3 | Backtracking through the regex world |
3 | Lexical scoping like a fox |
3 | Shift versus Sanity |
3 | Confessional |
3 | Database normalization the easier way |
perlnews |
2 | Build complex GUI applications with Gtk2-Perl |
1 | Leaping Kakapo |
1 | Perlmonk needs your help! |
1 | Can't detach threads on Windows: Thread::Detach 0.01 |
1 | regex coach |
1 | Perl 6 needs you! |
1 | Collaborative Learning Project officially opens |
1 | Proxy Objects |
1 | "Perl Idioms for Java" Underway at Sourceforge.net |
1 | It's Alive! - Rubbercity Perl Mongers |
1 | Apocalypse, Exegesis... and now Synopsis |
1 | Ponie (Perl 5 on Parrot) |
1 | EPIC - Perl plugins for Eclipse |
1 | ibmonitor version 0.2 |
1 | http://www.cpan.org |
1 | wxPerl 0.13 released + Wx::ActiveX |
1 | Parrot 0.0.9 released |
1 | Humourous: Unmaintainable Code--Howto |
1 | Perl6 Timeline By Apocalypse |
1 | YAPC 2002 Slides (pointers) |
perlquestion |
5 | Cheese |
4 | A question of style |
4 | MakeMaker, h2xs, and writing CPAN modules |
3 | Cross-platform development: editors |
3 | What goes in a test suite? |
3 | (Perl6) Groking Continuations |
3 | Modules in the Windows environment |
3 | I need answers QUICKLY! |
3 | A few random questions from Learning Perl 3 |
3 | Database searches with persistent results via CGI |
3 | Best Practices for Exception Handling |
2 | TWAIN Issues and Perl |
2 | Catching errors in closing lexical filehandles |
2 | inheritance: constructors |
2 | Schwartzian Transform and memory allocation. |
2 | Perl Functionality in Java |
2 | Sometimes it's in Void Context |
2 | float values and operators |
2 | Writing Modules/namespace polution |
2 | Would you use 'goto' here? |
2 | I wrote some clever code - can the comment "defuse" it? |
2 | Graph Traversal |
2 | access to my variables from other subs |
2 | Zipcode Proximity script |
2 | problems editing a flat-file |
2 | Lexical pad / attribute confusion |
2 | XML documentation formatting and transformations |
2 | proposed module: Math::Polyhedra |
2 | Decode a mail with MIME::Parser |
2 | How to debug unknown dynamic code? |
2 | Some beginning Tk help |
2 | Using stat() to get the total size of files in a folder |
2 | IYHO, what do you consider good code? |
2 | How do I recursively process files through directories |
2 | Confused about Taint |
2 | Sprite animation with SDL_perl |
2 | Choosing a data structure for AI applications |
2 | Context aware functions - best practices? |
2 | How to make bi-modal variables like $! ? |
2 | Still puzzled by floats |
2 | Using # inside qw() |
2 | making perl interactive with VI |
2 | random elements from array - new twist |
2 | Bug? 1+1 != 2 |
2 | Command line tool coding style? |
2 | XML Resume Module design |
2 | Large perl app source code to learn from |
perltutorial |
13 | Tricks with DBI |
13 | How (Not) To Ask A Question |
11 | Common Beginner Mistakes |
10 | References quick reference |
8 | A Guide to Installing Modules |
8 | Simple Module Tutorial |
8 | Pack/Unpack Tutorial (aka How the System Stores Data) |
7 | The Dynamic Duo --or-- Holy Getopt::Long, Pod::UsageMan! |
7 | POD in 5 minutes |
6 | Resorting to Sorting |
6 | intro to references |
6 | How to RTFM |
5 | José's Guide for creating Perl modules |
5 | How to make a CPAN Module Distribution |
4 | Introduction to Technical Writing/Documentation |
4 | Benchmarking Your Code |
4 | How To Ask a Question (With Test::More) |
4 | CGI Help Guide |
4 | Perl Object Oriented Meta-Tutorial |
4 | HowTo build and distribute a PPMed module for Win32 |
4 | Perl White Magic - Special Variables and Command Line Switches |
3 | HTML::Template Tutorial |
3 | Perl documentation documentation |
3 | Web Logs Using DBI |
3 | Getting more out of LWP::Simple |
3 | Using Win32::OLE and Excel - Tips and Tricks |
3 | Beginners guide to File::Find |
3 | A guide to installing modules for Win32 |
3 | Getting Started with Inline::C |
3 | Blessables -- What Can You Make Into Objects? |
3 | Microsoft Project and Perl |
3 | Common Regex Gotchas |
2 | Objects with Private Variables |
2 | Perl and Net::Pcap |
2 | Perl Singletons |
2 | Not Exactly a Hash Tutorial |
2 | Don't Use Regular Expressions To Parse IP Addresses! |
2 | MP3 server with IO::Socket |
2 | Getting Started with GnuPG and GPG |
2 | PerlMonks for the Absolute Beginner |
2 | The Scalar Range Operator |
2 | Variable Scoping in Perl: the basics |
2 | File Locking |
2 | Map: The Basics |
1 | Using the SNMP module from the Net-SNMP library |
1 | The difference between my and local |
1 | Calling .NET Assemblies with Win32::OLE |
1 | Lingua::Romana::Perligata - Basica Basicum Basicus |
1 | Troubleshooting Perl CGI scripts |
1 | A Beginner's Guide to Using Mail::Audit and Mail::SpamAssassin |
1 | An introduction to POE |
1 | Welcome to the Monastery! Make yourself at home. |
1 | Using select and IO::Select |
1 | Using can With Inheritance |
1 | XML::Generator::DBI Tutorial |
1 | Reading from a database |
1 | quotes in Perl |
1 | How will my regular expression match? |
1 | Introduction to Tree::DAG_Node |
1 | Use strict and warnings |
1 | Reading from more than one socket at once |
1 | The tie()s That Bind |
1 | Complex sorting |
1 | Everything you wanted to know about Module Version Numbers and Checking |
1 | A Practical Guide to Compiling C based Modules under ActiveState using Microsoft C++ |
1 | Stepping up from XML::Simple to XML::LibXML |
1 | Tie: Creating Special Objects |
1 | How to Ask A Regex Question (With Test::More) |
1 | Using (s)printf() |
1 | Shipping standalone perl apps on Win32 |
1 | Parsing your script's command line |
poem |
3 | The Greatest Verse |
3 | R0z3z 4r3 R3d |
2 | While ( True ) |
2 | The Perl Film Festival |
2 | Zen And The Art Of Perl Poetry |
2 | Tom's Nearly Lost Poem |
2 | Monk Levels |
2 | A page from the PM book of prayer |
2 | Fish dinner |
2 | holy grail - scene 4 |
2 | PSALM 23 |
poll |
2 | Do you plan to attend YAPC::America::North 2002? |
1 | How long have you been using Perl? |
1 | kudra is getting married and I'm going to get her a |
1 | My favorite color for the Handspring Visor is... |
1 | My favorite looping mechanism in Perl is: |
1 | Should Perl Gurus (Wall,Schwartz,Christiansen et al) receive mega XP based on who they are? |
1 | Perl 6 feature that scares me the most: |
rawdata |
2 | ktross's user image |
rawpage |
1 | Kathy's Song |
scratchpad |
1 | sauoq's scratchpad |
1 | jbrugger's scratchpad |
sectioncontainer |
5 | The Old Perl Monks FAQ |
3 | Level Powers |
1 | Finding and Linking to Information |
1 | Voting/Experience Information |
1 | Moderation and Editing Info |
sitefaqlet |
27 | What shortcuts can I use for linking to other information? |
9 | Friar |
6 | Writeup Formatting Tips |
4 | What are PerlMonks Orders? |
4 | How do I post a question effectively? |
3 | Level 1: Initiate |
3 | Level 26: Saint |
3 | Scribe, Pilgrim, Hermit, Chaplain, Deacon... |
3 | About the PerlMonks FAQ |
3 | Level 6: Scribe |
2 | How do I change my home node? |
1 | Outside Links |
1 | How should I spend my votes? -- General Voting Guidelines |
1 | Code Editors and Development Environments |
1 | Guide to PerlMonks Acronyms and Abbreviations |
1 | How do I moderate? |
1 | How do I link to a book by ISBN? |
1 | The Perl Monks Guide to the Monastery |
1 | Level 5: Beadle |
1 | Level 2: Novice |
1 | Signatures and Node Templates |
1 | How does Nodes to Consider work? |
1 | Chatterbox FAQ |
1 | Help for User Settings |
1 | What are Nodelets? |
snippet |
5 | overkill anti-caching CGI headers |
5 | Schwartzian Transform |
3 | VIM 6.0 filetype plugin for Perl |
2 | HTTP::Daemon with SSL |
2 | Array One-liners |
2 | Your own Chatterbox nodelet in less than 50 lines of code. |
2 | write/format hash data to a scalar in multi-line columns |
2 | HP Jet Direct Control |
2 | Permutations and combinations |
sourcecode |
13 | PerlMonks CSS Examples |
4 | Personal Nodelet Extractor |
3 | Code::Police |
3 | "Falsify" scalar strings |
3 | Graph displaying reputation of all your nodes |
3 | cblast35 |
2 | (code) Xp2v.pm |
2 | pmdesc2 - lists modules with description |
2 | (code) Directory of HTML to PostScript and PDF |
2 | robustly list any Perl code's module dependencies |
2 | (code) Just Another Net::FTP Script |
2 | Module Dependencies |
2 | cbhistory |
2 | mx - Mail Exchanger (MX) information about internet hosts |
2 | pmchat |
2 | RedWolf MonkChatter |
2 | Run and/or download code directly from perlmonk nodes. |
2 | BeatBox 2001 |
sourcecodesection |
2 | Chatterbox Clients |
1 | PerlMonks Related Scripts |
1 | Cryptography |
strangedoc |
7 | Message Inbox |
superdoc |
12 | Perl Monks Approved HTML tags |
11 | Best Nodes |
10 | What XML generators are currently available on PerlMonks? |
8 | Nodes To Consider |
8 | Worst Nodes |
6 | Super Search |
6 | scratch pad viewer |
5 | Most Visited Nodes |
5 | Useragent Logs |
5 | Borg's Belly |
5 | Recently Updated Home Nodes |
5 | Number of Monks by Level |
5 | the Default Node |
4 | Monks by Writeup Count |
4 | User Settings |
4 | The Monastery Gates |
4 | Editor Requests |
3 | perl monks site FAQ |
3 | Add Entries to vroom's Book List |
3 | Ignored Users |
3 | Perl Monks User Search |
3 | Voting/Experience System |
3 | XP gained from getting a single node to rep of when norm is |
3 | site how to |
2 | java chatterbox |
2 | The editors' hall of mirrors and trickery |
2 | Newest Nodes |
2 | Offering Plate |
2 | Level Stats |
2 | I want my picture back |
2 | Yesterday's Most-Visited Nodes |
2 | Categorized Questions and Answers |
2 | Obfuscated code |
2 | E-mail Node |
2 | how to use the moderation system |
2 | Perl Monk's Best Users |
2 | Saints in our Book |
1 | PerlMonks Approved Chatter HTML Tags |
1 | Book Reviews |
1 | user image browser |
1 | Past Polls |
1 | perl monk procedures |
1 | Reviews |
1 | new java chat client |
1 | Using the Perl Debugger |
1 | tutorials source |
1 | Inner Scriptorium |
1 | tombstone 163 |
1 | Perl News |
1 | pmdev task lister |
1 | Tutorials |
1 | Signature Settings |
1 | Recently Active Threads Faqlet |
1 | Craft |
1 | Bugbase Stats |
1 | Nodes Requiring Editing |
1 | linktype |
1 | Seekers of Perl Wisdom |
1 | assume all vroom's godly powers |
1 | Recently Active Threads |
1 | Snippets Section |
1 | Damian Conway's latest Zany Conference Show-Stopper Talk |
1 | Most Recent Node Links |
user |
10 | grep |
9 | turnstep |
8 | merlyn |
8 | grinder |
7 | blakem |
7 | japhy |
6 | gmax |
6 | Erudil |
5 | Ovid |
5 | atcroft |
5 | tilly |
5 | jeffa |
4 | bioinformatics |
4 | demerphq |
4 | mirod |
4 | ybiC |
4 | Dominus |
4 | larsen |
3 | PetaMem |
3 | sulfericacid |
3 | broquaint |
3 | blokhead |
3 | jdporter |
3 | BioGeek |
3 | dada |
3 | scain |
3 | ignatz |
3 | allolex |
3 | im2 |
3 | Corion |
3 | jcwren |
2 | tlm |
2 | Albannach |
2 | Enlil |
2 | Intrepid |
2 | danger |
2 | Aristotle |
2 | brian_d_foy |
2 | pbeckingham |
2 | YAFZ |
2 | BrowserUk |
2 | BigAl |
2 | ikegami |
2 | busunsl |
2 | Masem |
2 | rozallin |
2 | Jouke |
2 | tye |
2 | cjf |
2 | stefp |
2 | crouchingpenguin |
2 | and |
2 | abitkin |
2 | rob_au |
2 | naChoZ |
2 | pfaut |
2 | strat |
2 | crazyinsomniac |
2 | ZZamboni |
2 | gil |
2 | Itatsumaki |
2 | TheDamian |
2 | bobf |
2 | btrott |
2 | Zombie datavortex |
2 | da |
2 | diotalevi |
2 | nysus |
2 | adrianh |
usergroup |
4 | SiteDocClan |
3 | janitors |
2 | pmdev |
1 | QandAEditors |
1 | gods |
1 | power users |
wiki |
1 | q/"vroom's phantasmagorically phreaky w-w-w-wiki of phunky love fandango (thunderbolts, lightning, and rain, Oh My!)" is the new black/ considered harmful and door marked "Beware of the Leopard"... or so said your mama last night |
We're building the house of the future together.
| [reply] [d/l] |
|
This article is still in DRAFT.
Please do not vote on it or reply to it.
If you have any additions or corrections, please /msg them to me.
Thanks!
TOC:
General Articles
Inside-Out and Flyweight Objects in Perl
NB - Not guaranteed to be exhaustive
Modules for Object-Oriented Programming in Perl
See also: Modules by Damain Conway recommended for production use, some of which pertain to OOP.
In the following list, I have already filtered out any modules that appear too "light weight",
i.e. those which, based on their description alone, don't seem to do enough interesting stuff to be worth installing.
I have also skipped any modules that don't appear to address the problem space I'm interested in.
OO-related modules by schwern: |
base | I | Establish IS-A relationship with base class at compile time |
fields | A | compile-time class fields |
foundation | I | Inheritance without objects |
mixin | X | an alternative to multiple inheritance |
parent | I | Establish an ISA relationship with base classes at compile time |
Class-Data-Inheritable | AI | Inheritable, overridable class data |
Class-Fields | | class data utility functions |
Class-Object | O | each object is its own class |
Class-Virtual | I | Base class for virtual base classes. |
Class-WhiteHole | I | base class to treat unhandled method calls as errors |
Others: |
Alter | | "Alter-ego" objects |
Aspect | FP | AOP for Perl |
Attribute-Property | A | Easy lvalue accessors with validation |
Attribute-Handlers | | Simpler definition of attribute handlers (in some sense, a more open-ended but "safer" alternative to TIE) |
Basset | | see Basset. Now what?
|
Class-Accessor | A | Automated accessor generation |
Class-Adapter | DP | implementation of the Adapter Design Pattern; Class::Adapter::Clear - a Decorator base class. |
Class-AutoClass | AI | Automatically define simple get and set methods and automatically initialize objects in a (possibly mulitple) inheritance structure |
Class-BuildMethods | A | Lightweight implementation-agnostic generic methods (motiv.) |
Class-C3 | I | pragma to use the C3 method resolution order algorithm |
Class-ClassDecorator | P | Dynamically decorate classes instead of objects using NEXT; helps you use classes as decorators for other classes |
Class-Decorator | OP | Attach additional responsibilites to an object |
Class-Classless | O | framework for classless OOP |
Class-Closure | B | Encapsulated, declarative class style |
Class-Composite | P | Implements Composite patterns |
Class-Container | P | Glues object frameworks together transparently |
Class-Contract | AIP | Design-by-Contract OO |
Class-Delegate | D | easy-to-use implementation of object delegation |
Class-Delegation | D | Object-oriented delegation |
Class-Delegator | D | Simple and fast object-oriented delegation: subset of the functionality of Class::Delegation |
Class-Frame | A | Class template with default constructor and accessors autogenerated |
Class-Inner | IO | Java-like inner classes |
Class-InsideOut | AIP | a safe, simple inside-out object construction kit |
Class-Interfaces | F | for defining interface classes inline |
Class-MakeMethods | A | Generate common types of methods |
Class-MethodMaker | A | Create generic accessor methods that perform standard tasks |
Class-Meta | AU | Class automation, introspection, and data validation; accessor generation |
Class-MixinFactory | X | |
Class-Generate | A | Generate Perl class hierarchies (from specs) |
Class-Modular | AO | Modular class generation superclass - between Class-Mutator and true classless OOP, like Class-Classless |
Class-MOP | | a meta object protocol for the Perl 5 object system. It makes no attempt to change the behavior or characteristics of the Perl 5 object system, only to create a protocol for its manipulation and introspection. |
Class-Mutator | X | Run-time Dynamic Multiple Inheritance |
Class-Observable | P | Allow other classes and objects to respond to events in yours |
Class-Prototyped | O | Fast prototype-based OO programming in Perl |
Class-Publisher | R | A simple publish-subscribe event framework - based on Class::Observable |
Class-Role | | |
Class-Roles | | |
Class-SelfMethods | | |
Class-SingletonMethod | | |
Class-Spiffy | | Spiffy but without source filtering |
Class-Std | AIP | Support for creating "standard" inside-out classes. Warning |
Class-Struct | A | |
Class-Struct-FIELDS | A | - Combine Class-Struct, base, and fields |
Class-Structured | | |
Class-Tangram | A | |
Class-Tiny | A | |
Class-Trait | | Traits |
Class-Translucent | A | |
Class-Wrapper | ADP | |
ClassEHierarchy | | |
EO | | a well tested, solid, simple, and long living base class that other modules can rely on. |
Hash::Util::FieldHash | | Support for Inside-Out Classes. Is core as of Perl 5.10. |
Moose | |
an extension of the Perl 5 object system. built on Class-MOP. Larry has said,
"Moose is essentially a prototype of Perl 6's object model. On a semantic level, anyway." Find related posts |
Mouse | | Moose compatible object system, with no external dependences and fast start-up time |
Moo | | light-weight, high-performance Moose replacement |
NEXT | | |
NEXT-init | | |
OOTools | F | |
Object-Accessor | | |
Object-AutoAccessor | | |
Object-Generic | A | generic base class that allows storage of key/value pairs |
Object-InsideOut | AI | comprehensive support for implementing classes using the inside-out object model |
Object-Interface | F | allows specification of an abstract base class (aka pure virtual class) |
Object-Lexical | D | Syntactic Sugar for Easy Object Instance Data & More |
Object-LocalVars | D | Outside-in objects with local aliasing of $self and object variables |
Object-Meta-Plugin | OX | a classless compound object implementation or a base class for an element of thereof. |
Object-Pad | AIX | classes whose object member field are private variables that look like lexicals |
Object::Tiny | A | Like Class::Accessor::Fast, but "better, faster or cheaper on every single metric" |
Rose-Object | | |
Spiffy; Spoon | | |
Lexical-Attributes | | |
Categories:
B | Framework, kitchen sink, ball-o-wax |
R | Run-time interaction management/framework |
A | Creation of classes based on specification of data members/attributes, including generation of accessors |
I | Management of inheritance |
O | Per-object methods, class-less OO |
F | Interfaces |
X | Mixins and Roles |
D | Other alternatives to inheritance; alternatives to Perl's default OO scheme |
P | other Patterns |
U | class utility functions, meta-data management |
Plus there's a bunch of modules in the Class::Accessor:: namespace.
| [reply] |
|
| [reply] |
|
| [reply] |
|
|
|
Please do not vote or reply. If you have a comment on this, please /msg me. TIA!
Snippets of CB Conversations
2005-05-25 11:45:53 | planetscape: | the objective is to find a word I have heard but can't spell |
2005-05-25 11:48:02 | Roy Johnson: | You can always run it by us and see if it rings any bells. |
2005-05-25 11:48:29 | Roy Johnson: | We're a highly advanced neural net with phonetic training. |
2005-05-25 11:48:57 | Roy Johnson: | We even pass the Turing test. |
|
2005-08-08 17:07:23 | jdporter: | Globs are funny. So are filehandles. |
2005-08-08 17:07:54 | Intrepid: | s/funny/magical/ ;-) |
2005-08-08 17:08:57 | jdporter: | Just like mushrooms, either word applies. |
2005-08-08 17:09:24 | jdporter | smokes a filehandle and drops another glob. |
|
2005-10-03 11:20:21 | digiryde: | I started looking for ways to seemlessly wrap http I/O this weekend. |
2005-10-03 11:23:27 | digiryde: | I want to understand POE better. |
2005-10-03 11:24:55 | tye: | I hear he always used /usr/bin/less |
2005-10-03 11:26:33 | jZed: | I thought he used /usr/bin/never/more |
|
2005-10-18 11:05:56 | wfsp: | I put a cd in when there already was one in there. Made a horrible noise. |
2005-10-18 11:07:44 | bart: | It's called "music", wfsp. |
|
2005-10-19 12:51:04 | BerntB: | (-: I smelled a music flame war and since noone else started it, I had to :-) |
2005-10-19 12:52:20 | NodeReaper | has swallowed BerntB. BerntB was tasty! |
2005-10-19 12:52:41 | dwildesnl: | burn, BerntB, burn! |
2005-10-19 12:55:58 | BerntB: | Hmm.. "bite me" has double meanings in CB? |
2005-10-19 12:56:39 | dwildesnl: | everything does, BerntB :) |
|
2005-11-17 15:53:01 | theorbtwo: |
If you don't agree with the decisions of the power users, bring it up with the gods.
If you don't like the decisions of the gods, bring it up with vroom.
If you don't like the decisions of vroom, feel free to leave.
|
|
2005-11-22 12:13:03 | Spidy: | Woah, creepy. diotalevi isn't here! |
2005-11-22 12:13:39 | diotalevi | sneaks up behind Spidy, very, very, quietly. |
2005-11-22 12:15:08 | NodeReaper | sneaks up behind diotalevi, very, very, quietly. |
2005-11-22 12:16:12 | diotalevi | pirouettes and asks da grim one for a fling on the dance floor. |
2005-11-22 12:19:52 | NodeReaper: | Shall I lead or would like to my dear diotalevi? |
2005-11-22 12:20:52 | NodeReaper | grins and shows lots of teeth |
2005-11-22 12:21:32 | diotalevi | demurrs. Take me for a spin and lets see what you're made of. |
2005-11-22 12:21:24 | planetscape | .oO( is NodeReaper wearing his negligee? ) |
2005-11-22 12:23:22 | NodeReaper: | No, I borrowed the vote-fairy's tutu. |
2005-11-22 12:25:12 | planetscape: | you look quite fetching, NodeReaper |
2005-11-22 12:26:04 | tye: | yeah, bones look that way, planetscape... to dogs |
|
2006-01-17 22:27:51 | DigitalKitty: | I'm frequently surprised by how often various monks appear within the realm of my dreams. Spending so much time in the cb must have that effect. <hehe> |
2006-01-17 22:29:42 | DigitalKitty: | Only once or twice have I been truly surprised to meet another monk (diotalevi). The other encounters were almost as if we had been classmates / friends for years. |
2006-01-17 22:31:28 | McDarren: | wow...you dream about PM? |
2006-01-17 22:32:48 | DigitalKitty: | Music is a common facet. Watching and listening to jdporter stand with his feet close together, hands clasped behind his back while crooning an an operatic brit-pop fashion. Nice. |
2006-01-17 22:33:35 | jdporter | coughs |
2006-01-17 22:34:23 | jdporter | has a way of emerging from the shadows at just the right moment |
2006-01-17 22:34:49 | DigitalKitty | grins at jdporter. |
2006-01-17 22:36:46 | DigitalKitty: | I think the first time I had a dream about a monk was when jdporter was singing (see above for details) and I was buying an ice tea at someplace like Starbucks. It was around noon but they had a spotlight set-up and I thought that was unusual. |
2006-01-17 22:39:24 | DigitalKitty: | I remember leaning on the counter, sipping tea, and thinking: I'm going to surprise him when he finishes that song. He was crooning: And SOOOO Sally can wait..she knows its late as we're walkin' on by... |
2006-01-17 23:25:27 | DigitalKitty: | VZN eq 'Verizon'? (Scene) {boss} Dammit Porter! Where are our trucks at this moment? That shipment cannot be late. (jdporter) {reaches across desk and taps three keys} Relax Marvin, I've written a mod_perl program that uses Google maps and real-time GPS processing to show exactly where each of them are located. The exact coordinates are even updated graphically every 5 seconds. |
|
2006-03-07 15:43:29 | jeffa | takes his new laptop for a spin |
2006-03-07 15:44:15 | sporty: | jeffa: just don't sit on it first |
2006-03-07 15:45:37 | jeffa | revs the engine |
2006-03-07 15:46:09 | jeffa: | now for the stress test: does it recover well when dropped 17 stories onto Times Square |
2006-03-07 15:47:49 | jeffa: | stress test passed -- but i killed a street mime |
2006-03-07 15:48:11 | rhesa: | those will grow back, jeffa |
2006-03-07 15:48:21 | sporty: | jeffa, we have no mimes in nyc |
2006-03-07 15:48:23 | ww: | nah, he's just playing dead. |
2006-03-07 15:48:25 | rhesa: | jeffa, sorry :) |
2006-03-07 15:48:48 | virtualsue: | jeffa: that's almost a mitzvah |
|
2006-03-09 16:13:34 | DigitalKitty: | jdporter I need to scale back the caffeine consumption (Dream) Dark 'n stormy night. Full moon. Isolated mansion on a hill. You were wearing a tuxedo and tails with a top hat and sitting at a HUGE organ playing 'House of the Rising Sun' by... |
2006-03-09 16:14:49 | jdporter: | I'm telling you, Anna Beth, that was no dream. Your powers of clairvoyance are phenomenal. |
2006-03-09 16:15:41 | DigitalKitty: | ...Eric Burdon (of the Animals) and singing just like the CD. I was riding around on these winding dusty roads near the mansion in a long black car (passenger) with a mysterious driver. After multiple (unnecessary) turns, we pulled into the circular... |
2006-03-09 16:15:49 | jdporter: | Did you notice the part where I threw in a little flourish of Cream's Sunshine Of Your Love? |
2006-03-09 16:18:52 | DigitalKitty: | ...driveway and pushed open the heavy oak doors. The sound was extremely loud and almost operatic. The tuned pipes were resembled immense spires and I was intrigued by your gaunt appearance (very Halloween-esque). |
2006-03-09 16:20:29 | jdporter | does a silent dance of taunting. |
2006-03-09 16:21:19 | DigitalKitty: | jdporter++ .oO( That man is an artist). |
|
2006-03-30 15:34:55 | diotalevi: | That's funny you should mention the arrow of time earlier, Corion, since Data::Postponed is about reversing that. ]:-} |
2006-03-30 15:35:38 | diotalevi: | Kinda/sorta. |
2006-03-30 15:36:00 | Corion: | diotalevi: You're aware that while ( 0 <-- $time ) { also is valid code and reverses the flow of time? ;-) |
2006-03-30 15:37:00 | kutsu: | so Data::Postponed is the beta version of a time machine?! |
2006-03-30 15:37:46 | Corion: | kutsu: So far, it only works in the forward direction. :) |
2006-03-30 15:39:26 | kutsu: | could it make an hour take a minute so I only had to work a 10-minute day? :) |
2006-03-30 15:39:59 | Corion: | kutsu: Sure, but the seconds will feel slightly longer ;) |
|
2006-10-09 09:12:57 | virtualsue: | I'm so happy advocate's bf is here. She sprained her ankle last night and he gets to take her to the dr |
2006-10-09 09:17:06 | virtualsue: | she did it playing badminton (again) |
2006-10-09 09:18:23 | blue_cowdawg: | wasn't aware that badminton was a full contact sport. |
2006-10-09 09:20:09 | virtualsue: | it is the way these guys play it |
2006-10-09 09:20:57 | Corion: | blue_cowdawg: Why do you think they found it necessary to put a net between the parties? ;-)) |
2006-10-09 09:26:07 | kutsu: | remembers his friends making flash light tag a contact sport |
2006-10-09 09:31:42 | Corion: | You used the Maglite Police Brutality flash lights? ;) |
[marto]
:
I write software for the Nuclear and banking industries at the moment. |
[clinton]
:
nuclear and banking - interesting combination |
rhesa
hopes marto never confuses interest rates and decay rates |
[imp]
:
atomic transactions++ |
[
jdporter
]
:
for P anti-D3-branes the probe approximation is not good, there is a competing effect which can overcome the desire of the anti-D3s to embiggen: their attraction towards the wrapped D5s. Hence, the non-supersymmetric states would naively be meta-stable.
|
[
dewey
]
:
boy did I ever come into this conversation at the wrong time...
|
[
thezip
]
:
thezip moondances
|
[
injunjoel
]
:
injunjoel hands thezip a belt and tells him to pull his pants up.
|
[
thezip
]
:
thezip points out that it is quite impossible for his trousers to be down, since he is holding his crotch already
|
[
injunjoel
]
:
injunjoel points out to thezip that holding ones crotch does not imply that ones pants are up... the possibilities are left as an exercise for the reader :)
|
[
SFLEX
]
:
what should a perl programers resume look like?
|
[
Petruchio
]
:
Like line noise, of course.
|
planetscape coils into a ball and goes to sleep |
tye . o O ( dragonball zzzzz ? ) |
[Corion]:
Corion rejoices. My new phone has arrived :) Except that it has a singapore power adapter ... |
[Anno]:
that'll be some extension cord |
[Nalababu]: how do I compare one column of array to another and print those values that match? |
[jkva]: We use 2 people. If we go down into a cellar we have a third person 'feed' it. |
This was a case of a hilarious juxtaposition arising from the collision of two independent simultaneous conversations.
[castle]: I am a new user ... and I've posted a perl doubt |
[planetscape]: oh no, a doubt!? |
[planetscape]: despite this being a Monastery, we do not actually deal in matters of faith, castle. Questions, OTOH... |
[ambrus] shakes fist towards computer |
[tye]: just roll the dice |
Voronich feels oddly soiled, having just typed man touch at a prompt.
[Voronich] has decided that his next lathe project is chopsticks. |
[marto]: you're going to play a piano with a lathe? |
[Voronich]: it's either that or a tesla coil, |
[jdporter]: you're going to play a piano with a tesla coil? |
[clinton] apologises to all and sundry for his base humour |
[Corion]: clinton: You should know that the humor here is purported to be more acidic, so pouring base humor here makes for an explosive mix ;) |
[clinton] bubbles over |
[moritz]: if you need to hide some code to keep it "secure", you have a problem anyway |
[theorbtwo]: moritz, yes, and we do have a problem anyway. |
perl.j: How was PerlMonks made. |
Your Mother: perl.j: In six days. The details are fuzzy to this day. |
perl.j: Is there a node with some kind of answer? |
runrig: Many nodes have some kind of answer |
Your Mother: tye is the node with the answer but sadly there is no standard interface. |
Xiong: Laugh if you like. My tool is firming up. I feel ready to prematurely release. |
thezip: So why do they call it the "God" particle? |
thezip: Is that the one that went faster the than speed-of-light a few weeks ago? |
Voronich: nope. That was tomorrow. |
2022-05-18 12:16:22 | choroba only wears white socks when also wearing a red skirt |
2022-05-18 12:23:47 | LanX ice hockey? |
2022-05-18 12:24:17 | choroba Hard rock band! |
2022-05-18 12:26:30 | LanX where is the difference? |
| [reply] [d/l] [select] |
|
Current content of Tutorials, in perl data form
$VAR1 = {
'Tutorials' => [
{
'Welcome to the Monastery' => [
176063,
20443,
50427,
172086,
78752,
149675,
213052,
272366
]
},
{
'Getting Started with Perl' => [
284175,
418141,
408254,
860,
861,
66677,
990,
955,
918,
{
'Control Statements and Looping' => [
946,
947,
948,
949,
950,
951,
952,
953,
456530,
400446
]
},
960,
962,
{
'String matching and Regular Expressions' => [
967,
968,
969,
970,
401006
]
},
451278,
{
'Other Basics' => [
135462,
46769,
1641,
125289,
471590,
252477,
135323,
137108,
69927,
377450,
353259,
324749,
269642,
111088,
1698
]
},
{
'Perl Installation' => [
285799,
286241,
378226
]
}
]
},
{
'Functions, Subroutines, and Variables' => [
{
'Functions (built-in)' => [
254078,
20505,
20519,
224666,
213388
]
},
{
'Subroutines' => [
268891,
492651,
400359
]
},
{
'Variables' => [
95813,
213855,
211441,
94007,
105446,
133554
]
},
{
'Arrays and Lists' => [
90647,
457993,
371938
]
}
]
},
{
'Regular Expressions' => [
9096,
236866,
238272,
269035,
245725,
371722,
221512
]
},
{
'Working with Files and Databases' => [
{
'Files (and Directories)' => [
217166,
136482,
7058,
74013,
110030,
128876
]
},
{
'Databases' => [
392385,
264485,
279077,
284436,
162771,
150255,
7563,
273952,
7568,
7598
]
}
]
},
{
'Object Oriented Perl' => [
317520,
218778,
8076,
8215,
7940,
234012,
8070,
8251,
8259,
183417,
8344,
15838,
29813,
339131,
289076
]
},
{
'Network/CGI Programming' => [
{
'Network Programming' => [
282468,
8650,
190497,
21054,
396223
]
},
{
'CGI (and related) Programming' => [
{
'General Issues/Getting Started' => [
44536,
51012
]
},
{
'CPAN Modules' => [
244635,
120838,
144315,
65642,
46976,
99254,
105041,
107656,
168684,
211046
]
},
{
'Troubleshooting and FAQ\'s' => [
165253,
380424,
70846
]
}
]
}
]
},
{
'Writing, Installing, and Using Perl Modules' => [
128077,
434813,
113448,
158999,
138176,
393426,
431702,
102368,
249803,
102347,
216644
]
},
{
'Tutorials about Specific CPAN Modules' => [
214293,
321831,
127447,
155288,
104432,
152489,
280461,
151114,
371720,
253797,
133023,
355625,
190020,
32196,
170648,
291446,
153155,
180778,
108182,
174082,
181977,
153259,
110228,
430194,
153486,
392275,
{
'wxPerl Tutorials' => [
112297,
112816,
122227,
215789
]
},
181206,
62782,
218480,
490846,
253934,
105906,
421936
]
},
{
'Tips, Performance and Troubleshooting' => [
288022,
917,
8745,
128283,
192255,
32154,
217597,
220132,
1322,
147234
]
},
{
'Miscellaneous Perl Tutorials' => [
227909,
412121,
324638,
270016,
33772,
88222,
284324,
193649,
431511,
51097,
277596,
128722,
215299,
109641,
216842,
270014,
20312,
236970,
236975
]
},
{
'Perl Idioms Explained' => [
280025,
280658,
285498,
287647,
291543,
301355,
374287
]
},
{
'Non-English Tutorials' => [
127521,
159365,
132425,
284214,
272369,
264471,
264333,
237388
]
},
{
'Other Topics' => [
130249,
187449,
333737,
298877,
236804,
236978,
236977
]
}
]
};
All nodes of type perltutorial, in order (newest first)
Tutorials, ordered by content size.
Certain "worthless" nodes have been filtered out, particularly those tutorials owned by root.
The following nodes of type perltutorial are not linked in Tutorials:
| [reply] [d/l] [select] |
|
signs of intelligent life (in case anyone's searching ;-)
Top 10 reasons to start using ack
ack is a tool like grep, aimed at programmers with large trees of heterogeneous source code.
ack is written purely in Perl, and takes advantage of the power of Perl's regular expressions.
Discussion of my CPAN modules⇒ on CPANforum⇒.
Computational Linguistics
She's a supermodel. She's a philosopher. What more do you want?
Comic about⇒
DigitalKitty (by jkva's better half)
On 2005-10-14, I cleaned up some ancient cruft. The most interesting thing I found (and fixed) was the following.
In the thread of site how to (which, btw, is no longer an official site doc), some people had posted
"root" question nodes as replies. Apparently they didn't know how to go to Seekers of Perl Wisdom and scroll to the bottom.
So I yanked those nodes out and made them root nodes in the SoPW section. They were:
My Free Nodelet Hacks:
my patches
Some of my root and pseudo-root nodes:
In <32623.959291225@chthon>,
tchrist wrote:
A programmer who hasn't been exposed to all four of the imperative,
functional, objective, and logical programming styles has one or
more conceptual blindspots. It's like knowing how to boil but not
fry. Programming is not a skill one develops in five easy lessons.
The Young Man and the Beach⇒ by tchrist
Some interesting homenode replies:
O'Reilly has 36 syndication feeds:
The links above are to their default, which is Atom.
If you want RSS1/RDF, append ?format=rss1 to the URL.
If you want RSS0.9x/2.0, append ?format=rss2 to the URL.
Interesting thread: Useless unless. The "suggestion that Perl should have an otherwise" came from me. This thread is really about two issues: unless and otherwise. I don't care about the unless bit.
P+++$c--P6++R++M++O+++MA++++E++PU!BD>+++C++>*S+++X+>++WP+++MO
PP!n!PO o!G+OLCC+OLJ+OLP---OLL+Ee-Ev+Eon-uL++uS+w-⇒
I became a ham⇒ on November 22, 2004.
My call sign is KI4HTE.
This is my entry in the Thread That Dare Not Speak Its Name.
If you're interested in the geographical location of monks:
And don't miss the amazing pmplanet!⇒
Two awesome lists of Perl resources:
Resources for Learning Perl
In this order:
- Learn.Perl.org⇒
- Picking Up Perl⇒
- Beginning Perl⇒
- PerlMeme.org⇒
Useful Bookmarks
Internal:
External:
- An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl, by Lutz Prechelt. (I contributed a perl sample.)
- Timing Trials, or, the Trials of Timing: Experiments with Scripting and User-Interface Languages, by Brian W. Kernighan.
- the Scriptometer, by Pixel.
- The Language List: Info on ~2500 computer languages, by Bill Kinnersley.
- Lisp: Good News, Bad News, How to Win Big, by Richard P. Gabriel. And its most famous chapter: Worse Is Better.
- Larry's Perl page
- The Jargon File
- "A Fresh Look at Efficient Perl Sorting", the original paper on The Guttman-Rosler Transform. And here's the exact msg by Uri in clpm in which he posits the technique for the very first time.
- Perl Power Tools project
- Java Über Alles? by Tom Christiansen
- Java, The Illusion / Java is here to stay (1995 and 1997, respectively) by Brent Noorda
- Bill Pugh, with links to his articles on skip lists (which he invented) (as well as an article on why the Java memory model is fatally flawed)
- Umbrello - a UML modeller for KDE
- Search for UML-related projects on SourceForge
Design Patterns in Perl
Crumbs
- Greenspun's Tenth Rule of Programming: "Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified bug-ridden slow implementation of half of Common Lisp."
- Zawinski's Law of Software Envelopment: "Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can."
- Porter's Conflation: "Every sufficiently complicated program includes a half-baked implementation of half of the POP (or IMAP) spec." For example: Adso.pl
Sometimes you hear people speaking obliquely about something
in merlyn's past. Curious? Check it out⇒.
Single-Serving⇒ Goal:
"the best phrase guides and language aides on the web and the most useable maps and trail guides."
CultureGrams⇒
Gizmos
| [reply] [d/l] [select] |
|
perfect
theory
endless
eternal
desire
ambition
driving
perpetual
idea
logical
infinite
dream
final
best
escape
objective
thought
only
logic
clue
| [reply] |
|
|
|
# top-level nodes with conventionally-named sitedoclets:
# invoke sitedoclet directly in superdoc code:
Add your code Add your code sitedoclet
Best Nodes Best Nodes sitedoclet
Book Reviews Book Reviews sitedoclet
Buy Stuff Buy Stuff sitedoclet
Categorized Questions and Answers Categorized Questions and Answers sitedoclet
Code Catacombs Code Catacombs sitedoclet
Cool Uses for Perl Cool Uses for Perl sitedoclet
Duplicate Post Warning Duplicate Post Warning sitedoclet
Editor Requests Editor Requests sitedoclet
Free Nodelet Settings Free Nodelet Settings sitedoclet
How to use the moderation system How to use the moderation system sitedoclet
Inner Scriptorium Inner Scriptorium sitedoclet
Login Login sitedoclet
Meditations Meditations sitedoclet
Message Outbox Message Outbox sitedoclet
Module Reviews Module Reviews sitedoclet
Nodelet Settings Nodelet Settings sitedoclet
Nodes to consider Nodes to consider sitedoclet
Obfuscated code Obfuscated code sitedoclet
Past Polls Past Polls sitedoclet
Perl Monks Discussion Perl Monks Discussion sitedoclet
Perl News Perl News sitedoclet
Perl Poetry Perl Poetry sitedoclet
Quests Quests sitedoclet
Retrieving a forgotten username or password Retrieving a forgotten username or password sitedoclet
Reviews Reviews sitedoclet
Seekers of Perl Wisdom Seekers of Perl Wisdom sitedoclet
Snippets Section Snippets Section sitedoclet
Timezone Settings Timezone Settings sitedoclet
Tutorials Tutorials sitedoclet
# have sitedoclet by virtue of their respective types' corresponding display page:
CanConsider CanConsider sitedoclet
handlelinks settings handlelinks settings sitedoclet
gods gods sitedoclet
developers developers sitedoclet
QandAEditors QandAEditors sitedoclet
SiteDocClan SiteDocClan sitedoclet
SiteDocManagers SiteDocManagers sitedoclet
power users power users sitedoclet
janitors janitors sitedoclet
pmdev pmdev sitedoclet
cabal cabal sitedoclet
Site Documentation Clan Site Documentation Clan sitedoclet
pollsters pollsters sitedoclet
holders of unholy power holders of unholy power sitedoclet
Breathers of Fire Breathers of Fire sitedoclet
godes godes sitedoclet
pedagogues pedagogues sitedoclet
pirates pirates sitedoclet
# top-level nodes with conventionally-named sitedoclets and pass additional args:
Worst Nodes Worst Nodes sitedoclet 'trolls' 'newbies' 'general' (three different calls)
Perl Monks Approved HTML tags Perl Monks Approved HTML tags sitedoclet -table=>$table
Recently Active Threads Faqlet Recently Active Threads Faqlet sitedoclet -JS=>$JS,EG=>$EG
The St. Larry Wall Shrine The St. Larry Wall Shrine sitedoclet -quote=>$quote
Voting/Experience System Voting/Experience System sitedoclet -table=>$table,-norm=>$VS->{norm}
What XML generators are currently available on PerlMonks? What XML generators are currently available on PerlMonks? sitedoclet -Passthrough=>$list
# top-level nodes with UNconventionally-named sitedoclet: (no additional args)
Create A New User Choosing a username
# these are not top-level nodes, so they have to provide the sitedoclet name:
Cabalists' Nodelet Cabalists' Nodelet sitedoclet
Pedagogues Nodelet Pedagogues Nodelet sitedoclet
Pollsters' Nodelet Pollsters' Nodelet sitedoclet
QandAEditors Nodelet QandAEditors Nodelet sitedoclet
SiteDocClan nodelet SiteDocClan Nodelet sitedoclet
Information Information sitedoclet
showhints showhints sitedoclet
# this one passes additional args:
handle_scratchpad_edit showhints sitedoclet 'general'
# other sitedoclets
new user e-mail sitedoclet is completely unused.
| [reply] |
|
I reckon we are the only monastery ever to have a dungeon staffed with 16,000 zombies.
| [reply] |
|
nodetype | parent | dbtables(explicit) | dbtables(inherited) | group dbtable |
node | | node |
nodegroup | node | | node | nodegroup |
nodeletgroup | nodegroup | | node | nodegroup |
usergroup | nodegroup | document | node | nodegroup |
nodeball | nodegroup | setting | node | nodegroup |
theme | nodeball | | setting, node | nodegroup |
nodetype | node | node, nodetype | node |
container | node | container | node |
theme container | container | | container, node |
document | node | document | node |
note | document | note | document, node |
perlsolution | note | | note, document, node |
categorized question | note | contributor | note, document, node |
categorized answer | note | contributor | note, document, node |
pmdevnote | note | | note, document, node |
superdoc | document | | document, node |
restricted_superdoc | superdoc | | document, node |
sillyscript | restricted_superdoc | | document, node |
pmdevsuperdoc | superdoc | | document, node |
perlquestion | document | | document, node |
testquestion | perlquestion | | document, node |
perlmeditation | document | | document, node |
fullpage | document | | document, node |
meta-user | document | setting | document, node |
mail | document | mail | document, node |
perltutorial | document | | document, node |
perlexercise | document | | document, node |
monkdiscuss | document | | document, node |
CUFP | document | | document, node |
superquestion | document | | document, node |
superquestionarea | document | | document, node |
poem | document | | document, node |
obfuscated | document | | document, node |
sourcecode | document | sourcecode | document, node |
rawpage | document | rawpage | document, node |
css | rawpage | | rawpage, document, node |
Dynamic CSS | css | | rawpage, document, node |
script | rawpage | | rawpage, document, node |
strangedoc | document | | document, node |
request | document | | document, node |
quest | document | quest | document, node |
hint | document | hint | document, node |
sitefaqlet | document | | document, node |
sitedoclet | sitefaqlet | | document, node |
alphafaqlet | sitefaqlet | | document, node |
strangenode | document | | document, node |
review | document | review | document, node |
modulereview | review | | review, document, node |
bookreview | review | | review, document, node |
perlnews | document | | document, node |
testtype | document | | document, node |
wiki | document | wiki | document, node |
includefile | document | | document, node |
devtask | document | devtask | document, node |
scratchpad | document | scratchpad | document, node |
pmdevtopic | document | | document, node |
sqlquery | document | htmlcode, setting | document, node |
offtopicroot | document | | document, node |
htmlcode | node | htmlcode | node |
opcode | htmlcode | | htmlcode, node |
patch | htmlcode | patch | htmlcode, node |
accessrule | htmlcode | | htmlcode, node |
htmlpage | node | htmlpage | node |
image | node | image | node |
sourcecodesection | nodegroup | | node |
QandASection | nodegroup | | node |
sectioncontainer | nodegroup | document | node |
doclist | nodegroup | document, setting | node |
faqlist | doclist | | document, setting, node |
tutlist | doclist | | document, setting, node |
catqalist | doclist | | document, setting, node |
nodelet | node | nodelet | node |
rating | node | node, rating | node |
user | node | user, setting, document | node |
zombie_user | user | | user, setting, document, node |
perlman | node | node, document | node |
string | node | node, string | node |
docstring | string | | node, string, node |
faqstring | docstring | | node, string, node |
tutstring | docstring | | node, string, node |
catqastring | docstring | | node, string, node |
data | node | node, document | node |
perlfunc | node | node, perlfunc | node |
perlcraft | node | node, document | node |
linktype | node | string | node |
perlfaq nodetype | node | node, document | node |
dbtable | node | | node |
file | node | node | node |
maintenance | node | htmlcode, maintenance | node |
setting | node | setting | node |
themesetting | setting | themesetting | setting, node |
restricted setting | setting | | setting, node |
bug | node | bug | node |
poll | node | node, polls | node |
snippet | node | node, snippet | node |
reaped_snippet | snippet | | node, snippet, node |
pmmodule | node | node | node |
rawdata | node | node, rawdata | node |
testpoll | node | node, testpolls | node |
largedoc | node | largedoc | node |
| [reply] |
|
|