(Pulling this from the cb)
You know, there's only one place where I've come to think that self-chaining of mutators is a good idea, and that's in things like java's StringBuffer.append: basically, when the manipulator method is an accumulator of some sort.
So I've seen self-chaining, for example, in a C++ class that did checksums:
Checksum myCS;
myCS.addTo(x).addTo(foo).addTo(barObject);
cout << myCS;
Or the more familiar: (again, C++)
cout << "Value is: " << dec << myValue << " (hex: " << hex << myValue
+<< ")";
Here "dec" and "hex" aren't manipulators in the same sense as above, quite, but the syntax is clearly very similar. Again, though, the sense is that << is acting as an accumulator, and what passes through it adds on to what was there before, instead of being a "setter" method.
So getting back to Perl, this is in my opinion a perfectly respectable interface for a file-parsing library:
my $Ifile_format = new What::Ever::Format();
$Ifile_format->addRecType($XErec)
->addRecType($XFrec)
->addRecType($I7rec)
->addRecType($HMrec);
In this case, addRecType, while changing the state of $Ifile_format, is adding on new potential record types, and not setting some distinct value.
--
@/=map{[/./g]}qw/.h_nJ Xapou cets krht ele_ r_ra/;
map{y/X_/\n /;print}map{pop@$_}@/for@/