Skip to content
quotesby

315 Larry Wall Quotes

Larry Wall delivers witty, tongue-in-cheek musings about programming, Perl quirks, and communication.

Larry Wall quotes

  1. Although the Perl Slogan is There's More Than One Way to Do It, I hesitate to make 10 ways to do something. :-)

    #1
  2. And don't tell me there isn't one bit of difference between null and space, because that's exactly how much difference there is. :-)

    #2
  3. Besides, REAL computers have a rename() system call. :-)

    #3
  4. Chip Salzenberg sent me a complete patch to add System V IPC (msg, sem and shm calls), so I added them. If that bothers you, you can always undefine them in config.sh. :-)

    #4
  5. I don't know if it's what you want, but it's what you get. :-)

    #5
  6. I dunno, I dream in Perl sometimes...

    #6
  7. Piet van Oostrum: I find this a nice feature but it is not according to the documentation. Or is it a BUG? Larry Wall: Let's call it an accidental feature. :-)

    #7
  8. (To someone at New York University) If you consistently take an antagonistic approach, however, people are going to start thinking you're from New York. :-)

    #8
  9. If you want to program in C, program in C. It's a nice language. I use it occasionally... :-)

    #9
  10. I know it's weird, but it does make it easier to write poetry in perl. :-)

    #10
  11. I'm sure that that could be indented more readably, but I'm scared of the awk parser.

    #11
  12. It is, of course, written in Perl. Translation to C is left as an exercise for the reader. :-)

    #12
  13. It's all magic. :-)

    #13
  14. It's documented in The Book, somewhere...

    #14
  15. It won't be covered in the book. The source code has to be useful for something, after all... :-)

    #15
  16. Dan Smith: I've tried (in vi) 'g/[a-z] [a-z]/s//_/'...but that doesn't cut it. Any ideas? (I take it that it may be a two-pass sort of solution). Larry Wall: In the first pass, install perl. :-)

    #16
  17. Let's say the docs present a simplified view of reality... :-)

    #17
  18. Let us be charitable, and call it a misleading feature :-)

    #18
  19. Perl programming is an *empirical* science!

    #19
  20. Randal said it would be tough to do in sed. He didn't say he didn't understand sed. Randal understands sed quite well. Which is why he uses Perl. :-)

    #20
  21. Real programmers can write assembly code in any language. :-)

    #21
  22. The only disadvantage I see is that it would force everyone to get Perl. Horrors. :-)

    #22
  23. There are probably better ways to do that, but it would make the parser more complex. I do, occasionally, struggle feebly against complexity... :-)

    #23
  24. There are still some other things to do, so don't think if I didn't fix your favorite bug that your bug report is in the bit bucket. (It may be, but don't think it. :-)

    #24
  25. Though I'll admit readability suffers slightly...

    #25
  26. What about WRITING it first and rationalizing it afterwards? :-)

    #26
  27. You want it in one line? Does it have to fit in 80 columns? :-)

    #27
  28. All language designers are arrogant. Goes with the territory... :-)

    #28
  29. Besides, including <std_ice_cubes.h> is a fatal error on machines that don't have it yet. Bad language design, there... :-)

    #29
  30. Besides, it's good to force C programmers to use the toolbox occasionally. :-)

    #30
  31. Hey, I had to let awk be better at *something*... :-)

    #31
  32. If I allowed 'next $label' then I'd also have to allow 'goto $label', and I don't think you really want that... :-)

    #32
  33. In general, if you think something isn't in Perl, try it out, because it usually is. :-)

    #33
  34. I think it's a new feature. Don't tell anyone it was an accident. :-)

    #34
  35. It's there as a sop to former Ada programmers. :-)

    #35
  36. I won't mention any names, because I don't want to get sun4's into trouble... :-)

    #36
  37. Just don't create a file called -rf. :-)

    #37
  38. last|perl -pe '$_ x=/(..:..)...(.*)/&&$1ge$1&&$1lt$2' That's gonna be tough for Randal to beat... :-)

    #38
  39. No, I'm not going to explain it. If you can't figure it out, you didn't want to know anyway... :-)

    #39
  40. Perl itself is usually pretty good about telling you what you shouldn't do. :-)

    #40
  41. Sorry. My testing organization is either too small, or too large, depending on how you look at it. :-)

    #41
  42. There are many times when you want it to ignore the rest of the string just like atof() does. Oddly enough, Perl calls atof(). How convenient. :-)

    #42
  43. We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise.

    #43
  44. ... an initial underscore already conveys strong feelings of magicalness to a C programmer.

    #44
  45. And I don't like doing silly things (except on purpose).

    #45
  46. : And it goes against the grain of building small tools. Innocent, Your Honor. Perl users build small tools all day long.

    #46
  47. But you have to allow a little for the desire to evangelize when you think you have good news.

    #47
  48. Down that path lies madness. On the other hand, the road to hell is paved with melting snowballs.

    #48
  49. If I don't document something, it's usually either for a good reason, or a bad reason. In this case it's a good reason. :-)

    #49
  50. If you want to see useful Perl examples, we can certainly arrange to have comp.lang.misc flooded with them, but I don't think that would help the advance of civilization. :-)

    #50
  51. > (It's sorta like sed, but not. It's sorta like awk, but not. etc.) Guilty as charged. Perl is happily ugly, and happily derivative.

    #51
  52. Just don't compare it with a real language, or you'll be unhappy... :-)

    #52
  53. Lispers are among the best grads of the Sweep-It-Under-Someone-Else's-Carpet School of Simulated Simplicity. [Was that sufficiently incendiary? :-)]

    #53
  54. There ain't nothin' in this world that's worth being a snot over.

    #54
  55. ...this does not mean that some of us should not want, in a rather dispassionate sort of way, to put a bullet through csh's head.

    #55
  56. Unix is like a toll road on which you have to stop every 50 feet to pay another nickel. But hey! You only feel 5 cents poorer each time.

    #56
  57. What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?

    #57
  58. You have to admit that it's difficult to misplace the Perl sources. :-)

    #58
  59. Doing linear scans over an associative array is like trying to club someone to death with a loaded Uzi.

    #59
  60. Well, enough clowning around. Perl is, in intent, a cleaned up and summarized version of that wonderful semi-natural language known as 'Unix'.

    #60
  61. Anyway, there's plenty of room for doubt. It might seem easy enough, but computer language design is just like a stroll in the park. Jurassic Park, that is.

    #61
  62. Lisp has all the visual appeal of oatmeal with fingernail clippings mixed in.

    #62
  63. I don't like your I-can-use-anything-as-an-adjective attitude.

    #63
  64. I want to see people using Perl to glue things together creatively, not just technically but also socially.

    #64
  65. The whole history of computers is rampant with cheerleading at best and bigotry at worst.

    #65
  66. If someone stinks, view it as a reason to help them, not a reason to avoid them.

    #66
  67. As usual, I'm overstating the case to knock a few neurons loose, but the truth is usually somewhere in the muddle, uh, middle.

    #67
  68. Odd that we think definitions are definitive. :-)

    #68
  69. : But for some things, Perl just isn't the optimal choice. (yet) :-)

    #69
  70. I don't like this official/unofficial distinction. It sound, er, officious.

    #70
  71. If you write something wrong enough, I'll be glad to make up a new witticism just for you.

    #71
  72. So far we've managed to avoid turning Perl into APL. :-)

    #72
  73. Not that I have anything much against redundancy. But I said that already.

    #73
  74. They can always run stderr through uniq. :-)

    #74
  75. I'd put my money where my mouth is, but my mouth keeps moving.

    #75
  76. Of course, I reserve the right to make wholly stupid changes to Perl if I think they improve the language. :-)

    #76
  77. Call me bored, but don't call me boring.

    #77
  78. I think $[ is more like a coelacanth than a mastadon.

    #78
  79. We question most of the mantras around here periodically, in case you hadn't noticed. :-)

    #79
  80. That could certainly be done, but I don't want to fall into the Forth trap, where every running Forth implementation is really a different language.

    #80
  81. Tcl long ago fell into the Forth trap, and is now trying desperately to extricate itself (with some help from Sun's marketing department).

    #81
  82. The whole intent of Perl 5's module system was to encourage the growth of Perl culture rather than the Perl core.

    #82
  83. Randal can write one-liners again. Everyone is happy, and peace spreads over the whole Earth.

    #83
  84. Life gets boring, someone invents another necessity, and once again we turn the crank on the screwjack of progress hoping that nobody gets screwed.

    #84
  85. No prisoner's dilemma here. Over the long term, symbiosis is more useful than parasitism. More fun, too. Ask any mitochondria.

    #85
  86. P.S. Perl's master plan (or what passes for one) is to take over the world like English did. Er, *as* English did...

    #86
  87. You can prove anything by mentioning another computer language. :-)

    #87
  88. I think you didn't get a reply because you used the terms 'correct' and 'proper', neither of which has much meaning in Perl culture. :-)

    #88
  89. I'm sure a mathematician would claim that 0 and 1 are both very interesting numbers. :-)

    #89
  90. True, it returns ' ' for false, but ' ' is an even more interesting number than 0.

    #90
  91. Any false value is gonna be fairly boring in Perl, mathematicians notwithstanding.

    #91
  92. We didn't put in ^^ because then we'd have to keep telling people what it means, and then we'd have to keep telling them why it doesn't short circuit. :-/

    #92
  93. Anybody want a binary telemetry frame editor written in Perl?

    #93
  94. Perhaps I'm missing the gene for making enemies. :-)

    #94
  95. Perl has a long tradition of working around compilers.

    #95
  96. Personally, I like to defiantly split my infinitives. :-)

    #96
  97. Real theology is always rather shocking to people who already think they know what they think. I'm still shocked myself. :-)

    #97
  98. The computer should be doing the hard work. That's what it's paid to do, after all.

    #98
  99. The following two statements are usually both true: There's not enough documentation. There's too much documentation.

    #99
  100. Of course, this being Perl, we could always take both approaches. :-)

    #100
  101. The random quantum fluctuations of my brain are historical accidents that happen to have decided that the concepts of dynamic scoping and lexical scoping are orthogonal and should remain that way.

    #101
  102. At many levels, Perl is a 'diagonal' language.

    #102
  103. I'm serious about thinking through all the possibilities before we settle on anything. All things have the advantages of their disadvantages, and vice versa.

    #103
  104. Part of language design is perturbing the proposed feature in various directions to see how it might generalize in the future.

    #104
  105. Sometimes we choose the generalization. Sometimes we don't.

    #105
  106. I wouldn't ever write the full sentence myself, but then, I never use goto either.

    #106
  107. It's appositival, if it's there. And it doesn't have to be there. And it's really obvious that it's there when it's there.

    #107
  108. Oh, get ahold of yourself. Nobody's proposing that we parse English.

    #108
  109. As with all the other proposals, it's basically just a list of words. You can deal with that... :-)

    #109
  110. I hope I'm not getting so famous that I can't think out load [sic] anymore.

    #110
  111. It would be possible to optimize some forms of goto, but I haven't bothered.

    #111
  112. A 'goto' in Perl falls into the category of hard things that should be possible, not easy things that should be easy.

    #112
  113. How do Crays and Alphas handle the POSIX problem?

    #113
  114. Well, that's more-or-less what I was saying, though obviously addition is a little more cosmic than the bitwise operators.

    #114
  115. You tell it that it's indicative by appending $!. That's why we made $! such a short variable name, after all. :-)

    #115
  116. The choice of approaches could be made the responsibility of the programmer.

    #116
  117. As someone pointed out, you could have an attribute that says 'optimize the heck out of this routine', and your definition of heck would be a parameter to the optimizer.

    #117
  118. If you're going to define a shortcut, then make it the base [sic] darn shortcut you can.

    #118
  119. It is my job in life to travel all roads, so that some may take the road less travelled, and others the road more travelled, and all have a pleasant day.

    #119
  120. It's getting harder and harder to think out loud. One of these days someone's gonna go off and kill Thomas a'Becket for me...

    #120
  121. I was about to say, 'Avoid fame like the plague,' but you know, they can cure the plague with penicillin these days.

    #121
  122. But the possibility of abuse may be a good reason for leaving capabilities out of other computer languages, it's not a good reason for leaving capabilities out of Perl.

    #122
  123. Oh, wait, that was Randal...nevermind...

    #123
  124. P.S. I suppose I really should be nicer to people today, considering I'll be singing in Billy Graham's choir tonight... :-)

    #124
  125. Magically turning people's old scalar contexts into list contexts is a recipe for several kinds of disaster.

    #125
  126. And we can always supply them with a program that makes identical files into links to a single file.

    #126
  127. I wasn't recommending that we make the links for them, only provide them with the tools to do so if they want to take the gamble (or the gambol).

    #127
  128. This has been planned for some time. I guess we'll just have to find someone with an exceptionally round tuit.

    #128
  129. switch (ref $@) { OverflowError => warn 'Dam needs to be drained'; DomainError => warn 'King needs to be trained'; NuclearWarError => die; }

    #129
  130. I surely do hope that's a syntax error.

    #130
  131. Anyway, my money is still on use strict vars . . .

    #131
  132. If you remove stricture from a large Perl program currently, you're just installing delayed bugs, whereas with this feature, you're installing an instant bug that's easily fixed. Whoopee.

    #132
  133. I don't think it's worth washing hogs over.

    #133
  134. It's certainly easy to calculate the average attendance for Perl conferences.

    #134
  135. Tcl tends to get ported to weird places like routers.

    #135
  136. Historically Tcl has always stored all intermediate results as strings. (With 8.0 they're rethinking that. Of course, Perl rethought that from the start.)

    #136
  137. Just don't make the '9' format pack/unpack numbers... :-)

    #137
  138. I think that's easier to read. Pardon me. Less difficult to read.

    #138
  139. To ordinary folks, conversion is not always automatic. It's something that may or may not require explicit assistance. See Billy Graham. :-)

    #139
  140. Well, you can implement a Perl peek() with unpack('P',...). Once you have that, there's only security through obscurity. :-)

    #140
  141. It may be possible to get this condition from within Perl if a signal handler runs at just the wrong moment. Another point for Chip... :-)

    #141
  142. As pointed out in a followup, Real Perl Programmers prefer things to be visually distinct.

    #142
  143. The Harvard Law states: Under controlled conditions of light, temperature, humidity, and nutrition, the organism will do as it damn well pleases.

    #143
  144. That should probably be written: no !@#$%^&*:@!semicolon

    #144
  145. That gets us out of deciding how to spell Reg[eE]xp?|RE . . . Of course, then we have to decide what ref $re returns... :-)

    #145
  146. 'Course, that doesn't work when 'a' contains parentheses.

    #146
  147. I was trying not to mention backtracking. Which, of course, means that yours is 'righter' than mine, in a theoretical sense.

    #147
  148. Not that I'm against sneaking some notions into people's heads upon occasion. (Or blasting them in outright.)

    #148
  149. (To the extent that anyone but a Prolog programmer can understand X totally. (And to the extent that a Prolog programmer can understand 'cut'. :-))

    #149
  150. Wow, I'm being shot at from both sides. That means I *must* be right. :-)

    #150
  151. You don't have to wait--you can have it in 5.004_54 or so. :-)

    #151
  152. There's something to be said for returning the whole syntax tree.

    #152
  153. It's not really a rule--it's more like a trend.

    #153
  154. Double *sigh*. _04 is going onto thousands of CDs even as we speak, so to speak.

    #154
  155. The code also assumes that it's difficult to misspell 'a' or 'b'. :-)

    #155
  156. Well, hey, let's just make everything into a closure, and then we'll have our general garbage collector, installed by 'use less memory'.

    #156
  157. People who understand context would be steamed to have someone else dictating how they can call it.

    #157
  158. For the sake of argument I'll ignore all your fighting words.

    #158
  159. Think of prototypes as a funny markup language--the interpretation is left up to the rendering engine.

    #159
  160. The way these things go, there are probably 6 or 8 kludgey ways to do it, and a better way that involves rethinking something that hasn't been rethunk yet.

    #160
  161. Beauty? What's that?

    #161
  162. I'm afraid my gut level reaction is basically, proceed is cute, but cute doesn't cut it in the emergency room.

    #162
  163. I suppose one could claim that an undocumented feature has no semantics. :-(

    #163
  164. Yes, we have consensus that we need 64 bit support. :-)

    #164
  165. : - cut in regexps I don't think we reached consensus on that. We're still backtracking...

    #165
  166. Boss: You forgot to assign the result of your map! Hacker: Dang, I'm always forgetting my assignations... Boss: And what's that 'goto' doing there?!? Hacker: Er, I guess my finger slipped when I was typing 'getservbyport'... Boss: Ah well, accidents will happen. Maybe we should have picked APL.

    #166
  167. Perhaps they will have to outlaw sending random lists of words. fee fie foe foo

    #167
  168. Hey, if pi == 3, and three == 0, does that make pi == 0? :-)

    #168
  169. (Never thought I'd be telling Malcolm and Ilya the same thing... :-)

    #169
  170. And other operators aren't so special syntactically, but weird in other ways, like 'scalar', and 'goto'.

    #170
  171. Portability should be the default.

    #171
  172. If this were Ada, I suppose we'd just constant fold 1/0 into die 'Illegal division by zero

    #172
  173. Are you perchance running on a 64-bit machine?

    #173
  174. Almost nothing in Perl serves a single purpose.

    #174
  175. There's some entertainment value in watching people juggle nitroglycerin.

    #175
  176. Reserve your abuse for your true friends.

    #176
  177. Er, Tom, I hate to be the one to point this out, but your fix list is starting to resemble a feature list. You must be human or something.

    #177
  178. It's hard to tune heavily tuned code. :-)

    #178
  179. Perl will always provide the null.

    #179
  180. It's easy to solve the halting problem with a shotgun. :-)

    #180
  181. Well, I think Perl should run faster than C. :-)

    #181
  182. To Perl, or not to Perl, that is the kvetching.

    #182
  183. I suppose you could switch grammars once you've seen 'use strict subs'. :-)

    #183
  184. Well, you know, Hubbard had a bunch of people sworn to commit suicide when he died. So of course he never officially died...

    #184
  185. Even the White House has a press agent. :-)

    #185
  186. That's a valid argument. I just don't think it's valid enough. :-)

    #186
  187. Perl should remain fast and intuitive (to the extent that it is :-)

    #187
  188. I would estimate that the number of programs it breaks in the world will be less than 10. As long as one of those 10 isn't CGI.pm, we're probably okay.

    #188
  189. Just put in another goto, and then it'll be readable. :-)

    #189
  190. I'm reminded of the day my daughter came in, looked over my shoulder at some Perl 4 code, and said, 'What is that, swearing?

    #190
  191. Y'know, there are other possibilities if we assume that filenames are UTF-8...yikes...wait, put down that meat cleaver! Aieeee!!!

    #191
  192. print rand rand rand 1, ' '; # interesting distribution

    #192
  193. : I could understand principles of Perl source in 2-3 days [. . .] Gee, it took me about eleven years. :-)

    #193
  194. There's often more than one correct thing. There's often more than one right thing. There's often more than one obvious thing.

    #194
  195. I don't believe I've ever cuddled my elses.

    #195
  196. I've always maintained a cordial dislike for indent, because it's usually right.

    #196
  197. I'd make people say 'use Fork;' if I thought I could get away with it.

    #197
  198. The way I see it, if you declare something portable, you'll always be wrong, and if you declare it non-portable, you'll always be right. :-)

    #198
  199. Perhaps you should compile your Perl with long doubles one of these megaseconds.

    #199
  200. : Why Bible quotes exclusively? What happened to the Eastern religions?<BR> I'm still working on the Unicode mods.

    #200
  201. Maybe we should take a clue from FTP and put in an option like 'print hash marks on every 1024 iterations'. :-)

    #201
  202. And besides, if Perl really takes off in the Windows space, I think the rest of us would just as soon have a double-agent within ActiveState. :-)

    #202
  203. The court finds everyone to be in contempt (including himself :-), and orders everyone sentenced to five years hard labor. (Working on Perl, of course.)

    #203
  204. I note that the Python folks still think they like JPython. I wonder how long that will last?

    #204
  205. I view the JVM as just another architecture that Perl ought to be ported to. (That, and the Underwood typewriter...)

    #205
  206. So please don't think I have a 'down' on the MVS people. I'm just pulling off their arms to beat other people over the head with.

    #206
  207. It's, uh, pseudo code. Yeah, that's the ticket... [...] And 'unicode' is pseudo code for $encoding. :-)

    #207
  208. : What do people think? What, do people think? :-)

    #208
  209. Well, sure, I explicitly mentioned 'vtables' last time I brought this up. But a single pointer is fairly paltry, as tables go. :-)

    #209
  210. I dunno. Perhaps you should be happy that I have a policy of refraining from grumbling about handicapped operating systems. :-)

    #210
  211. Perl did not get where it is by ignoring psychological factors.

    #211
  212. On the plus side, it's a lot easier in general to find /usr/include than cpp.

    #212
  213. Psychotics are consistently inconsistent. The essence of sanity is to be inconsistently inconsistent.

    #213
  214. That which hits the fan tends to get flung in all directions.

    #214
  215. If this were Ada, we'd simply doc it as 'erroneous'.

    #215
  216. So I'm thinking about ??, or !!, or //, or \, or whatever. But I think I like ?? the best so far. Or the least worst.

    #216
  217. One operator is no big deal. That can be fixed in a jiffy.

    #217
  218. In Clintonese, that would be 'You are free to infer that I was saying that.' :-)

    #218
  219. Would you trust the linguistic intuitions of someone who has been studying Latin or Greek for three days?

    #219
  220. But I know what's important to me, and what isn't. And I think I know what people can get used to, and what they can even learn to like. (It just takes some people longer than others. :-)

    #220
  221. My arthritic pinkies are already starting to ache just thinking about ||||=.

    #221
  222. Orthogonality for orthogonality's sake is not something I'm keen on.

    #222
  223. Must be a different Larry Wall. There are at least 137 of us in the U.S.

    #223
  224. Symmetry is overrated. Overrated is symmetry.

    #224
  225. That is a known bug in 5.00550. Either an upgrade or a downgrade will fix it.

    #225
  226. That being said, I think we should immediately deprecate any string concatenation that combines '19' with '99'. :-)

    #226
  227. The Golden Gate wasn't our fault either, but we still put a bridge across it.

    #227
  228. It should be illegal to yell 'Y2K' in a crowded economy. :-)

    #228
  229. One thing I do understand is that people get scared when I start thinking out loud. :-)

    #229
  230. : No comment, since this is still hovering (see Larry's reply). Flutter, flutter.

    #230
  231. We don't have enough parallel universes to allow all uses of all junction types--in the absence of quantum computing the combinatorics are not in our favor...

    #231
  232. Accidental stacks considered harmful.

    #232
  233. I try not to confuse roles and traits in my own life. Being the Perl god is a role. Being a stubborn cuss is a trait. :-)

    #233
  234. And in the limiting case where the optimizer is completely broken because it's not implemented yet, we get to work around that too. Optionally...

    #234
  235. I think I'm happier with that. $rubyometer += 0.3 or so. :-)

    #235
  236. double value; /* or your money back! */ short changed; /* so triple your money back! */

    #236
  237. /* now make a new head in the exact same spot */

    #237
  238. #define NULL 0 /* silly thing is, we don't even use this */

    #238
  239. #define SIGILL 6 /* blech */

    #239
  240. if (rsfp = mypopen('/bin/mail root','w')) { /* heh, heh */

    #240
  241. /* And you'll never guess what the dog had */ /* in its mouth... */

    #241
  242. break; /* don't do magic till later */

    #242
  243. stab_val(stab)->str_nok = 1; /* what a wonderful hack! */

    #243
  244. tmps_base = tmps_max; /* protect our mortal string */

    #244
  245. pos += screamnext[pos] /* does this goof up anywhere? */

    #245
  246. str->str_pok |= SP_FBM; /* deep magic */ s = (unsigned char*)(str->str_ptr); /* deeper magic */

    #246
  247. echo 'Congratulations. You aren't running Eunice.

    #247
  248. echo 'Hmmm...you don't have Berkeley networking in libc.a...' echo 'but the Wollongong group seems to have hacked it in.

    #248
  249. echo 'ICK, NOTHING WORKED!!! You may have to diddle the includes.';;

    #249
  250. echo $package has manual pages available in source form. echo 'However, you don't have nroff, so they're probably useless to you.

    #250
  251. echo 'Your stdio isn't very std.'

    #251
  252. [End of diatribe. We now return you to your regularly scheduled programming...]

    #252
  253. OOPS! You naughty creature! You didn't run Configure with sh! I will attempt to remedy the situation by running sh for you...

    #253
  254. That means I'll have to use $ans to suppress newlines now. Life is ridiculous.

    #254
  255. There is, however, a strange, musty smell in the air that reminds me of something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.

    #255
  256. You can't have filenames longer than 14 chars. You can't even think about them!

    #256
  257. Your csh still thinks true is false. Write to your vendor today and tell them that next year Configure ought to 'rm /bin/csh' unless they fix their blasted shell. :-)

    #257
  258. /* we have tried to make this normal case as abnormal as possible */

    #258
  259. s = (char*)(long)retval; /* ouch */

    #259
  260. signal(i, SIG_DFL); /* crunch, crunch, crunch */

    #260
  261. if (instr(buf,sys_errlist[errno])) /* you don't see this */

    #261
  262. /* dbmrefcnt--; */ /* doesn't work, rats */

    #262
  263. #else /* !STDSTDIO */ /* The big, slow, and stupid way */

    #263
  264. /* This bit of chicanery makes a unary function followed by a parenthesis into a function with one argument, highest precedence. */

    #264
  265. Be consistent.

    #265
  266. Does the same as the system call of that name. If you don't know what it does, don't worry about it.

    #266
  267. Even if you aren't in doubt, consider the mental welfare of the person who has to maintain the code after you, and who will probably put parens in the wrong place.

    #267
  268. Help save the world!

    #268
  269. If you want your program to be readable, consider supplying the argument.

    #269
  270. In general, they do what you want, unless you want consistency.

    #270
  271. Okay, that's definitely enough hype.

    #271
  272. Perl is designed to give you several ways to do anything, so consider picking the most readable one.

    #272
  273. Remember though that THERE IS NO GENERAL RULE FOR CONVERTING A LIST INTO A SCALAR.

    #273
  274. The autodecrement is not magical.

    #274
  275. *** The previous line contains the naughty word '$&'. if /(ibm|apple|awk)/; # :-)

    #275
  276. When in doubt, parenthesize. At the very least it will let some poor schmuck bounce on the % key in vi.

    #276
  277. But I'm not here to talk about postmodernism. I tried to do that last spring, and afterwards I was thoroughly deconstructed by the deconstructionists for attempting to deconstruct deconstructionism. At least, that's the construction I put on their construction of it. I was talking about postmodern culture, and they thought I was talking about postmodern literature. Not at all the same thing!

    #277
  278. And C was good at something I like to call manipulexity, that is the manipulation of complex things. While shell was good at something else which I call whipuptitude, the aptitude for whipping things up.

    #278
  279. So... Perhaps the Perl 6 slogan should be 'All Your Paradigms Are Belong To Us'. We'll get to that.

    #279
  280. I simultaneously believe that languages are wonderful and awful. You have to hold both of those. Ugly things can be beautiful. And beautiful can get ugly very fast. You know, take Lisp. You know, it's the most beautiful language in the world. At least up until Haskell came along. (laughter) But, you know, every program in Lisp is just ugly. I don't figure how that works.

    #280
  281. Now, I'm not the only language designer with irrationalities. You can think of some languages to go with some of these things.

    #281
  282. How do you type it? With your keyboard.

    #282
  283. If there's a particular problem that Perl is trying to solve, it's the basic fact that all programming languages suck. Sort of the concept of original sin, applied to programming languages.

    #283
  284. There are a lotta computer languages out there doing drugs.

    #284
  285. In computer science, it is said that premature optimization is the root of all evil.

    #285
  286. [Boxed] Multiple bouncing balls in a box are a metaphor for community. Notice how the escaping balls explode. This is what happens to people who move from Perl to Ruby.

    #286
  287. ...Then you start building things like the Berlin wall to keep people inside your community. In anthropological terms, that's tribalism. A tribal Perl programmer might say, 'If you leave the Perl tribe to go and join the Python tribe, we will hunt you down, cook you, and eat you.' Or if you join the Ruby tribe, you will explode. By and large, I am not in favor of tribalism. Except for my tribe, of course.

    #287
  288. The three chief virtues of a programmer are: Laziness, Impatience and Hubris.

    #288
  289. The problem with being consistent is that there are lots of ways to be consistent, and they're all inconsistent with each other.

    #289
  290. There's really no way to fix this and still keep Perl pathologically eclectic.

    #290
  291. :I also discovered Larry's First Law of Language Redesign: Everyone wants the colon.

    #291
  292. Larry's 2nd Law of Language Redesign: Larry gets the colon.

    #292
  293. When's the last time you used duct tape on a duct?

    #293
  294. Jesse Vincent: My dog is Web 2.0. Prove me wrong. Larry: Does your dog have a long tail? Damian Conway: If you enjoyed these practices, find 245 more like this in this book. Larry: Does your dog have a long tail?

    #294
  295. Q. Why is this so clumsy? A. The trick is to use Perl's strengths rather than its weaknesses.

    #295
  296. I already have too much problem with people thinking the efficiency of a perl construct is related to its length. On the other hand, I'm perfectly capable of changing my mind next week... :-)

    #296
  297. I'll say it again for the logic impaired.

    #297
  298. I might be able to shoehorn a reference count in on top of the numeric value by disallowing multiple references on scalars with a numeric value, but it wouldn't be as clean. I do occasionally worry about that.

    #298
  299. Interestingly enough, since subroutine declarations can come anywhere, you wouldn't have to put BEGIN {} at the beginning, nor END {} at the end. Interesting, no? I wonder if Henry would like it. :-)

    #299
  300. It is easier to port a shell than a shell script.

    #300
  301. : I've heard that there is a shell (bourne or csh) to perl filter, does : anyone know of this or where I can get it? Yeah, you filter it through Tom Christiansen. :-)

    #301
  302. Tactical? TACTICAL!?!? Hey, buddy, we went from kilotons to megatons several minutes ago. We don't need no stinkin' tactical nukes. (By the way, do you have change for 10 million people?)

    #302
  303. > This made me wonder, suddenly: can telnet be written in perl? Of course it can be written in Perl. Now if you'd said nroff, that would be more challenging...

    #303
  304. : 1. What is the possibility of this being added in the future? In the near future, the probability is close to zero. In the distant future, I'll be dead, and posterity can do whatever they like... :-)

    #304
  305. (Presuming for the sake of argument that it's even *possible* to design better code in Perl than in C. :-)

    #305
  306. Obviously I was either onto something, or on something.

    #306
  307. It's the Magic that counts.

    #307
  308. May you do Good Magic with Perl.

    #308
  309. I knew I'd hate COBOL the moment I saw they'd used 'perform' instead of 'do'.

    #309
  310. But we can both blame it all on Henry.

    #310
  311. Hmm, doubtful. The source code generally wasn't there when I needed it.

    #311
  312. If ease of use was the highest goal, we'd all be driving golf carts.

    #312
  313. Many computer scientists have fallen into the trap of trying to define languages like George Orwell's Newspeak, in which it is impossible to think bad thoughts. What they end up doing is killing the creativity of programming.

    #313
  314. What you'll need most is courage. It is not an easy path that you've set your foot upon.

    #314
  315. Optimizations always bust things, because all optimizations are, in the long haul, a form of cheating, and cheaters eventually get caught.

    #315