Domain: perl.com
Stories and comments across the archive that link to perl.com.
Comments · 775
-
perl 6 is gonna change all thisAnyone here that read the latest perl apocalypse, #5 it was, knows full well the regex as we know and love them are out-the-window. The apocalypse is a large document, so I picked this page to give you a little idea of wants going to change. The pages before that mention all the warts that Larry wants to bury.
I understand that Perl 6 isn't near being done, and that the "r" in "Perl" doesn't necessarily stand for "regex", depending on who you ask, but Perl will always have the greatest influence over what is called a regex. Or is that going to change with Perl 6?
-
what about perl 6?
He doesn't even mention the radical changes to regexps in Perl 6, as described in the recent Apocalypse 5 and Synopsis 5.
-
what about perl 6?
He doesn't even mention the radical changes to regexps in Perl 6, as described in the recent Apocalypse 5 and Synopsis 5.
-
dead languageWho cares about Perl? It's gonna dyi anyway soon along with Python. The result of their merge, new language Parrot will be very unstable for awhile, uncompatible to both Perl and Python. So any investment of time, efforts and books to Perl (and Python) will be lost.
I think it's because of lack of standard of both Perl and Python.
If Perl is dying - where to go? Ruby? Erlnag? Lisp? I stick with Lisp for while. At least it's very clean, very clear and has a lot of libraries - that's exactly what I need from a language for web management.
-
dead languageWho cares about Perl? It's gonna dyi anyway soon along with Python. The result of their merge, new language Parrot will be very unstable for awhile, uncompatible to both Perl and Python. So any investment of time, efforts and books to Perl (and Python) will be lost.
I think it's because of lack of standard of both Perl and Python.
If Perl is dying - where to go? Ruby? Erlnag? Lisp? I stick with Lisp for while. At least it's very clean, very clear and has a lot of libraries - that's exactly what I need from a language for web management.
-
Re:Two different useage models"suitable ruleset configuration" - this is the key. The system (change and configuration management) should be rule-based. The reason why all previous open source (and even commercial) CCM systems failed - their architects ignored results achieved in AI research and, therefore, they made very unflexible systems.
Based on my software development expierience (17 years) I can tell, that there is no clear borders between models of software development process organization. Every team is uniq. Therefore, there is no universal models. But there are rules:
- Rules to control access (based on ID, groups, roles, files, directories, branches, tags, schedules etc).
- Rules to replicate distributed repositories. Rules to roll-out new versions.
- Rules to resolve conflicts
- Even rules to create "smart" diffs
- and, of course, rules to "report" (if CVSWeb would be made with XSLT).
-
Perl 6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thankyou very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD^H^H^H^HPerl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.
-
Perl 6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thankyou very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD, erm, Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.
-
Re:Ho Humm
I guess there isn't a whole lot of insightful, interesting, funny observations you can make about other people's photos.
Maybe not, but there are certainly one or two frankly scary observations to be made. -
I'll save you the searching.
Right to the good stuff.
-
Re:What's left to do?
Which is a fantastic idea by the way - just imagine, a simple -> in perl going off and querying the oracle database in the basement. That would rock.
That would indeed rock, which is why Perl already supports it. Review "Tied Variables".
-
Perl 6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thankyou very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD, erm, Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter.
-
Re:They screwed up - so what?
with all of linux's efforts it's only a matter of time someone writes a virii
Wow, that's a first. I've seen the plural of virus written (incorrectly) as "virii", but I've never seen the SINGULAR of "virus" written as anything except "virus" until now. Kudos for expanding the English language! ;)All joking aside, "virii" is not any form of the word "virus". I'm not trying to be pedantic, I just can't stand it when otherwise intelligent people make mistakes like this.
-
Re:still getting buffer overflows huh?
There are lots of people who would prefer not to program in C or C++, but find that all the alternatives have drawbacks, including a lack of avilable enviroments for all platforms. Chip Salzenberg's comments on the language selection for the failed Topaz project are very interesting.
-
Re:Opposite Effect Achieved
Not a flame, just FYI:
1) Antibiotics don't affect viruses; they only affect bacteria.
2) The only acceptable plural of "virus" is "viruses". "Viri" (or even worse, "virii") are not valid plurals of "virus". The unfortunately-extended example is that "radius" becomes "radii", but there are numerous Latin words that end in "-us" that do not have "-i" as a plural. Reference:
http://www.perl.com/language/misc/virus.html -
Where'd you get all them eyes?...far more sheltered from the types of virii that affect your average Microsoft OS
That's a lot of i's for the end of a word that looks a lot like cactus or octopus or rebus or syllabus in it's singular form. Oddly enough, like those others, the plural of virus doesn't have all those i's at the end. It's just plain "viruses", man.
I could see where it might be "viri", maybe; catci and octopi both set that precedent. But not "virii". That's just nasty. Can you imagine someone using "rebii" or "cactii"? Or maybe even "trojii" and "worii", while we're adding i's to everything that can infect your PC.
Anyway, I don't mean to harp on you, necessarily. It's just that "virii" is the literary equivalent of fingernails on a blackboard. I'm not the only one with this hangup either, although I have mixed feelings about being in the same boat as Tom Christiansen on any issue...
-B
-
A good article
A good reference on this is from one of the eToys architects. It uses mod_perl as the technology but the general strategies -- caching in particular -- will work for any application server technology.
-
What Larry's doing to PerlI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thankyou very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD, erm, Perl is dying.
-
Perl 6 is a mistakeI've been using perl pretty much constantly since the Pink Camel, and believe me, Perl 5 is an extremely good language for quick scripting things. That's what it was designed for. Sure, you can do big projects in it, but it's not exactly ideal. Recently I've started using Ruby as well, and I intend to move my department over to it instead of wasting time with Perl 6.
One of the goals of Perl 6 is to make non-trivial projects possible. That's good. The way it's being done is bad. Perl was once a lightweight, extremely flexible language. Now it's become a huge ugly monster. People wanted OO, so a nasty hack was bolted on top to allow some semblance of it. Now this nasty hack is being expanded. Sure, the code's different, but the basic form is the same. Kludge upon kludge upon kludge; I'd much rather have a nice, clean, pure language (and not one with loads of irritating whitespace thankyou very much).
The same goes for the syntax. All the switching between $, @ and % is really irritating (ask a newbie how to get at the length of the keys array of a hash inside a hash, for example), and the changes proposed for 6 are just making this worse -- it seems that Larry, in his infinite wisdom, wants to prefix every data type with a different hard-to-type character. Perl was only designed for the three data types, and adding more is a mess.
Perl 6 is a complete rewrite, but it keeps all the mess which has accumulated over the previous versions. This is not good. Sure, my const int $var = 27; may look neat (in the same way that, say, Pascal does), but $var isn't entirely constant, or entirely an integer, it's just a hack which makes it sort of behave like one. The whole thing is an exercise in pseudo-computer science masturbation with little real purpose except to please the managers who dislike the one thing that makes Perl special.
On a similar note is regexes. I'm an avid fan of regular expressions simply because a nondeterministic finite automata is far more flexible than linear code. However, Larry must have been smoking that cheap $2 crack when he wrote this. Does he want Perl 6 to be flex or something?
I won't be going on to use 6. It's a nice idea, but it's completely unnecessary. It won't make large projects any easier to manage (the language is still, at heart, an almighty hack -- an impressive one, but still a hack). It won't make OO any cleaner. It won't make development any faster. To put it bluntly, Perl scripts will still look less beautiful than our friend Mr Goatse. I'd prefer to use a language which has always been pure synthesis of science and engineering, not some half-baked imposter.
Perl 6 will be nice, but I'm guessing it will be the end of Perl. It can't do what it wants to do whilst still being based upon a nasty mess. There are now other options, which provide all of Perl's power and none of the mess. Sorry, but *BSD, erm, Perl is dying. Larry is buggering it up the ass without lubricants, just like Shoeboy is doing to Larry's daughter. -
s/Perl/Perl5/ and Larry Wall agrees with you
You're totally right, and the perl community agrees with you. For example, on page 3 of the apocalypse, Larry Wall states that perl has too much historical baggage. But that's exactly why they're redesigning it for perl 6.
It's up for debate whether python, ruby, PHP do perl better than perl, but it's true that they all took the good things out from perl5 and left out the bad things. They're doing the same with perl 6. In addition, some extremely bright people are working on it that have had a lot of experience with designing and extending languages. If you read the apocalypse, it's amazing how Larry Wall has shed all of his preconceptions and leanings towards older versions of perl. They're taking the good stuff out of every language and fusing it together in a very colaborative way. And I'm convinced that the resulting perl6 will be a language to be reconed with. -
Re:No Common Thread...but...
typechecking might be due in Perl 6. No doubt Imperial will be one of the first places to upgrade. Is CSG finally installing JDK 1.2 as standard on the Win2k boxes?
-
Re:The GPL: Protection or Theft?Our friendly little AC scrawled upon Slashdot with his crayons:
Consulting for several large companies,
...with no names...
Recently however, a top online investment firm asked us to do some work
...about which you give not the slightest detail...
using Linux. The concept of having access to source code was very appealing to us, as we'd be able to modify the kernel to meet our exacting standards
...about which you give not the slightest detail...
which we're unable to do with Microsoft's products.
Gotcha. You'd be able to modify the kernel which you're unable to do with Microsoft's products. Noted.
Although we met several technical challenges along the way (specifically, Linux's lack of Token Ring support and the fact that we were unable to defrag its ext2 file system),
You've been trying very hard so far, but this is the most obvious troll pointer - unless your "company" you must have just not noticed this and this.
So you can imagine our suprise when we were informed by a lawyer
...with no name...
Part of this license states that any changes to the kernel are to be made freely available.
The GPL specifically mentions the Linux kernel (only one of thousands of projects licensed under the GPL), does it?
Unfortunately for us, this meant that the great deal of time and money we spent "touching up" Linux
...to meet your "exacting" standards, yes... (sorry, having difficulty keeping the face straight here... :-)
to work for this investment firm would now be available at no cost to our competitors.
Bugger, eh?
Furthermore, after reviewing this GPL our lawyers
...who still don't have names...
advised us that any products compiled with GPL'ed tools - such as gcc - would also have to its source code released. This was simply unacceptable.
I've also been told by special voices (that only I can hear) that because the US President's name starts with "G", the world is doomed to nuclear annihilation sometime next week. This is simply unacceptable to me. He needs to change his name, and fast.
Although we had planned for no one outside of this company
Hell, preferably noone inside the company either, I'd hope!
to ever use,
I mean, you don't want people using your product, do you? Shit, were would be be if we had that situation? Just imagine what the world would be like if software producers had people using the software they create...
let alone see the source code, we were now put in a difficult position. We could either give away our hard work, or come up with another solution.
"...We tried contacting the Good Software Group to help us out with our difficult position, but they haven't returned any of our phone calls yet."
Although it was tought to do, there really was no option: We had to rewrite the code, from scratch, for Windows 2000.
Despite the fact that you were unable to modify the Windows 2000 kernel to meet your exacting standards, as you previously mentioned...
I think
...despite overwhelming evidence to the contrary...
the biggest thing keeping Linux from being truly competitive with Microsoft is this GPL.
Not Microsoft's army of evil monkeys? Wow.
Its draconian requirements virtually guarentee that no business will ever be able to use it.
No doubt it virtually does - in your virtual world - just like it has with your virtual company and virtual lawyers and virtual clients like the aforementioned virtual investment firm.
After my experience with Linux,
"...an experience strangely akin to the last twenty minutes of 2001: A Space Odyssey, if I remember correctly, which I don't..."
I won't be recommending it to any of my
...virtual...
associates. I may reconsider if Linux switches its license to something a little more fair, such as Microsoft's "Shared Source".
Whoopee.
Until then its attempts to socialize the software market will insure it remains only a bit player.
"THAT WAS A PUNE, OR PLAY ON WORDS, ALBERT. I DON'T KNOW IF YOU NOTICED." "I'm laughing like hell deep down, sir." "HO. HO. HO." -- Terry Pratchett, "Hogfather".
Thank you for your time.
No problem.
Pete.
PS. Sigh. -
Re:A new virus...I'm on a crusade. I intend to post a comment like this one whenever I see anybody use "virii." Please don't interpret this comment as either endorsement of or disagreement with the parent post. Moderators: with your help, we can wipe out "virii" in our lifetime!
The plural of "virus" isn't "virii." There is no such word. The plural of "virus" is "viruses."
Here's a good explanation from cdknow.com, quoted here in its entirety because the people who most need to read this won't click on a link.
The correct English plural of virus is viruses. Please consult any good dictionary before making up words.
For the purists, in Latin, there is a rarely-used plural form:
virus, viri (neuter)
(Forms: almost always restricted to nominative and accusative singular; generally singular in Lucretius, ablative singular in Lucretius)
The point of this is that even in Latin the form "viri" is rarely used. The singular form is used in most every instance. (This is from the Oxford Latin Dictionary.)
So, when considering the Latin: "virii" is incorrect and "viri" was almost never used.
Despite the fact there was little use for the plural form, there is another reason why "viri" was rarely used. The most common Latin word for "man" is "vir" with "viri" being its plural in the form used as the subject of a sentence. Thus, since "men" as the subject of a sentence would be used far more often than "venoms" (virus means venom) the "viri" word was most commonly seen as the plural of "man."
Bottom line: Don't try to make up words using a false Latin plural form. Since the word virus in its English form is now used then the English plural (viruses) should be used.
More plural-of-virus resources:
perl.com, the canonical and exhaustive source
The alt.comp.virus FAQ
Jonathan de Boyne Pollard's Frequently Given Answer
Merriam-Webster's "Word for the Wise," January 20, 2000. -
Open Standard and Java
There has been a fair number of posts about whether or not Java is really an "Open-Standard". The first thing to remember is where this article originates, Business 2.0.
Taking that into account, Java is an open standard. Are there other compilers for Java? Yes. Are there multiple interpreters for Java? Yes. Is the standard published on how it works? Yes (Addison-Wesely publishes several books on it). So, for the average intended reader of business 2.0, Java is an open standard.
I'm probably going to get flamed for this, but something doesn't have to be controlled by an international standards organization to be open.
Now, if you'll excuse me, I'm going to go prepare for flames as I've posted something that people are going to have problems with.
-
Re:Why i have to log in as root.I'm on a crusade. I intend to post a comment like this one whenever I see anybody use "virii." Please don't interpret this comment as either endorsement of or disagreement with the parent post. Moderators: with your help, we can wipe out "virii" in our lifetime!
The plural of "virus" isn't "virii." There is no such word. The plural of "virus" is "viruses."
Here's a good explanation from cdknow.com, quoted here in its entirety because the people who most need to read this won't click on a link.
The correct English plural of virus is viruses. Please consult any good dictionary before making up words.
For the purists, in Latin, there is a rarely-used plural form:
virus, viri (neuter)
(Forms: almost always restricted to nominative and accusative singular; generally singular in Lucretius, ablative singular in Lucretius)
The point of this is that even in Latin the form "viri" is rarely used. The singular form is used in most every instance. (This is from the Oxford Latin Dictionary.)
So, when considering the Latin: "virii" is incorrect and "viri" was almost never used.
Despite the fact there was little use for the plural form, there is another reason why "viri" was rarely used. The most common Latin word for "man" is "vir" with "viri" being its plural in the form used as the subject of a sentence. Thus, since "men" as the subject of a sentence would be used far more often than "venoms" (virus means venom) the "viri" word was most commonly seen as the plural of "man."
Bottom line: Don't try to make up words using a false Latin plural form. Since the word virus in its English form is now used then the English plural (viruses) should be used.
More plural-of-virus resources:
perl.com, the canonical and exhaustive source
The alt.comp.virus FAQ
Jonathan de Boyne Pollard's Frequently Given Answer
Merriam-Webster's "Word for the Wise," January 20, 2000. -
Re:speaks more to TESTING
It might even be a requirement to get a module into CPAN; I'm not sure.
It's not a requirement, but it is highly recommended (and easy) . If you add a new feature to Perl or fix a bug, tests and documentation are both required. -
Obligatory spelling flame
It's viruses, not virii. http://language.perl.com/misc/virus.html has a good overview of this argument, or check any dictionary or biology text.
-
Re:Really, how common are these things?
"viri" is not an English word. See What's the Plural of `Virus'?
-
Re:The Legality Of Spyware
Oh, for the love of god. For the nth time, it's viruses, not virii. One of the characteristics of the English-speaking geek culture is the use of specialized jargon or shibboleths; but another characteristic is an above-average emphasis on correctness and precision. Using a made-up word like "virii" doesn't make you cool; it makes you sound stupid.
First, the Latin word "virus" meant slimy liquid or offensive odor or taste. It was an abstract noun that didn't lend itself to pluralization, and in fact Latin had no plural for it. Modern languages have all invented their own plurals when "virus" entered their vocabulary: German, Viren, French and Italian, virus (they use the same word for singular and plural, like we use "deer").
Second, and most important, the OED gives only "viruses" as a proper plural for "virus."
More details on the etymology of "viruses" can be found here.
Oh, and before you ask, it's "boxes" and not "boxen."
Thus endeth the lesson. -
Re:The solution is education!
Sorry, but that's the lamest thing I've heard today. I seriously doubt the problem you claim exists has anything to do with their age. Many of the world's greatest achievements and contributions to progress were the work of "old" people-- even in the arenas of government and science.
Old means more knowledge, old does not mean more intelligence. Old people are less nimble, they cant handle change at all. Old people are the last people you want making laws for technology like computers when most of them dont even know how to operate one.
I never said old people arent intelligent, or knowledgeable, What I said is they cant adapt.
Thats why old people dont know how to handle computers and hire young people to teach them.
Can't teach kids from text books that are 30 years old or older? Not so say the ever-present Christians of America. They're teaching their children how to live their lives according to a "textbook" that's over 2000 years old (average). Ditto the Jews (3000+ years old) and the Muslims (1200 years old) and the Native Americans (traditions several hundred years old). Not that I agree with these practices, but the people doing this are your neighbors, and on some level you need to respect their choices in life if you want to get along with them and maybe even convince them to make some changes.
Who ever said tradition teaches a personn how to think? Its true alot of people live their lives letting other people think for them. They may be my neighbors but its them or me right now, their ignorance can bring the world to chaos, or we can educate them and hope to save the world.
You cant have ignorance in a high tech society, because the technology eventually will get to the point where any radicial religious freak can destroy the world at the push of a button.
They are free to support their religion, but we should teach them to think for themselves not let the book think for them, if they choose the book after they know how to think for themselves then i can respect THEIR choice, but alot of them dont choose, they are born into it and never question their religions because they are never taught to thinnk for themselves.
Been there, done that. It's called the DMCA. It is an attempt to start making it more difficult to share files by increasing the likelihood that sharing is an offense, and by increasing the potential penalties attached to violations. Most laws are similar. Check the statutes against sexual assault or murder. They are 100% reactive-- only useful for defining acts as crimes and laying out a punishment, not for prevention. Otherwise rape and murder laws would require chastity belts and the confiscation of every potential weapon (including plastic forks).
The DMCA is unconstitutional!! how the hell can you compare sexual assualt to the DMCA?
The DMCA is censorship, its 100 percent unconstitutional, free speech was the basis of the US constitution, censorship removes free speech, DMCA is censorship.
People dont WANT DMCA, people want laws on sexual assault, theres A BIG diffrence. One law is to protect the people, the other law is to control and censor the people.
The people should decide where the technology goes, and the technology should decide where the laws go.
heck the statutes against sexual assault or murder. They are 100% reactive-- only useful for defining acts as crimes and laying out a punishment, not for prevention. Otherwise rape and murder laws would require chastity belts and the confiscation of every potential weapon (including plastic forks).
Rape and Murder have nothing to do with taking away your freedom. Ok, so to have the government outlaw guns would take away your freedom, this is more like the DMCA (you cant sell guns, you cant buy guns, you cant distribute guns, you cant touch a gun, you cannot tell anyone how to create a gun)
Thats what the DMCA is like.
DMCA on the physical level via nano technology
"You cannot materialize this, you cannot materialize that, you cannnot do this, you cannot do that"
This takes AWAY our freedom, I thought freedom was more important than everything?
By the way, as an educated computer programmer, you should know that "virii" is not a word. Just call them "viruses" like a grown person, okay?
Viruses is in the dictionary however it doesnt follow the rules of english.
Example
Virii can be used instead of Viruses because no one even the "programmers" know which one is correct.
I'll use Virii because it fits in with every other scientific word, and because it looks better.
As an educated programmer, you'd understand that the world must be filled with educated people, in order to support the technology we are creating.
-
Using Perl With XSLT
-
Using Perl With XSLT
-
Using Perl With XSLT
-
Re:Hello? "Know Your User"?
Exactly. If you want to satisfy the power user, you can have those options available, in the "Advanced" settings or something, but keep it simple for the average user.
Take Larry Wall's guidance from Perl (here, 3rd bullet): : "Common operations should be ``Huffman coded.'' That is, frequently used operators should be shorter than infrequently used ones. ...". The UI should be the same way. -
perl
Slashdot ran a story on an early Perl/Flash module... mustabeen... at least two years ago. As usual, the answer's Perl: now what's the question?
;) -
Does .NET doom Java? Yes, and for a good reason.What is the fundamental difference between Java and its ilk, and C#
.NET and their ilk (inluding Mono and dotGNU)?Simple.
Java is Java. You cannot plug any other language into the VM. The VM is Java, and Java is the VM. This means that you have all the good and bad associated with this language (more in a minute).
With
.NET, and C#, C# is not .NET. The CLR allows you to plug in other languages. See ActiveState for details. You can plug in Perl, Python, Tcl, etc. And it works.Why this is important (and it is): No one language is suitable to all tasks. Things which are trivially expressible in Perl or Python are non-trivial in Java. Things you might be better suited to use Fortran or C++ for (for speed or other reasons) are best left in those languages.
Java makes the fundamental mistake of attempting to be all things to all people. It really isnt as good as the hype surrounding it makes it out to be. And the hype has been shrill as of late.
What is Java to do? Well, it can shrivel up and go away, or adapt. This means that it would need to open its VM up to other languages. It is not C# vs Java that is the problem for Java, it is J2EE vs
.NET. J2EE suffers from all the problems that Java suffers from (it has to). .NET has its own issues, but Mono is coming along nicely, and it runs nicely.My best guess is Java will probably continue to win designs for another year or two as this technology (.NET and Mono) firm up. Microsoft is smart enough to know that Linux is its strongest and fastest growing threat in server-land, so if they can give the Linux world something they can deal with (by allowing Mono to continue and interoperate), they get to kill off J2EE by sucking the oxygen out of it.
And that is exactly what they are doing.
Java and J2EE are "dead languages/environments walking" for a few more years, unless they can open up the VM and interoperate like Mono,
.NET, and the CLR allow them to. Check out the articles on perl.com about using Perl with the CLR and .NET. -
How to beat the Slashdot Junk filter?
I had the text too, but I kept getting blocked by the Slashdot filter when I tried to repost it. I even tried using Striff Tummel. What's your trick to weed out the stuff that triggers the Slashdot filter?
-
Re:Perl in the Linux kernel?
Wasn't someone working on embedding a Perl interpreter in the Linux kernel a while ago? And/or rewriting all of
/bin as Perl scripts using the kernel-based interpreter?I haven't ever heard about it, until I read your comment. After a quick Google searching I found some info about it.
In the Summer 2000 issue of The Perl Journal, Simon Cozens wrote Perlix, The Perl Operating System article:
It started, as so many of these things do, with one of those interminable debates between programmers. You know what I mean. They usually end up with one party shouting something like "Well, fine, I don't care if it's impossible, I'm going to do it anyway!"
This time around, it was me, and the topic in question was an operating system user-space comprised of non-GNU components. An operating system consists of two components: the kernel, like Windows or Linux, which talks to the hardware and directs the action, and the user-space, which is all the programs that you see and use: a shell, Explorer, programs to list directories, move files, read your mail, play games, and so on.
On "free" operating systems, a sizeable proportion of the essential user-space - not the really high-level things like web browsers, but the basic stuff that gets the system up and running - comes from the GNU project, and it was these programs that I wanted to replace.
Don't get me wrong. This wasn't an anti-GNU jihad. But someone had told me it wasn't possible, which was precisely the incentive I needed to get stuck into an idea I'd had a while ago.
Any sensible person would use BSD code here -- the BSD project derived their utilities from de-commercialized sources of Unix, and evolved independently of GNU. But that would be easy. And it wouldn't be fun. If you're going to prove a point, do it with style. So I was going to do it with Perl. [...]
Very interesting text, he mentions Tom Christiansen's Perl Power Tools: The Unix Reconstruction Project - "Our goal is quite simply to reimplement the classic Unix command set in pure Perl, and to have as much fun as we can doing so." I like the simple version of cat:
#!/usr/bin/perl -w
print while <>;Simon Cozens also writes about Gregor Purdy's Perl Shell (psh) - "The Perl Shell is a shell that combines the interactive nature of a Unix shell with the power of Perl. The goal is to eventually have a full featured shell that behaves as expected for normal shell activity. But, the Perl Shell will use Perl syntax and functionality for control-flow statements and other things." - and about Claudio Calvelli's Linux filesystem written in Perl (PerlFS), but the link is dead and I couldn't find the new PerlFS home page (anyone knows it?).
On 2000-09-26 the SF Project: Perlix Kernel was registered by Bill Dahab. The Perlix.sf.net homepage is empty, the Development Status is Planning. The stats show more activity a year ago. Here's the summary:
Perlix is to be an POSIX compliant operating system based on the more graceful language of Perl, in stead of the uglier C. This specific project is to make a kernel written in Perl, and other core components for this operating system
Let me also quote the latest news about Perlix:
Posted By: rydor
Date: 2001-08-05 14:19
Summary: Ok, the deal with perlixFor one thing, work has not yet really begun on the perlix kernel, at most it's been in speculation. The main thing, is that this project really needs Perl6 to go ahead. Also, is needed (i don't really know if Perl6 will allow it) is direct memory writing via perl. If anyone wants to hack it into Perl 5, that would be great. One thing that may be very helpful, is to load Perl into system memory. From there Perl should run fast enough on a more high end computer to support a kernel. Another thing that has been thought about is since a Perl kernel would be relatively dynamic, have on the fly kernel upgrades, via a special script to be written. So if you want to swap in a new network driver that works better, you use this script, and the script would somehow through that driver in quickly. Anyway, If anyone is interested in joining for planning this out, either email me at Rydor@dahab.com or post to the board here, but posting to that board will probably take me a lot longer to figure out that you've done so. Anyway, hopefully we can get this figured out enough to get off the ground, and I hope the project will be lots of fun.
I also found Greg McLearn's Perl Operating System: Initial Planning Stage from 2001-11-23:
The first order of business is to make a bootable Perl kernel. Basically, this will consist of the Perl 4 core components being hacked into a state whereby it can be loaded into memory after booting and executed. In the initial stages, any Perl code to be executed will be stored as a string and handed to the interpreter module. In later stages, the Perl code will be executed from an arbitrary memory buffer.
Making the Perl 4 core components bootable is easier said than done. A memory-management system will have to be created to replace that found in a standard Unix system. As well, any dependency on the I/O subsystem will have to be removed or replaced.
I am basing the initial design on Perl 4 because the source code is far easier to understand and modify. Perl 4 does not contain many oddities currently found in the Perl 5 runtime (such as OOP and macro-hell). [...]
It sounds very interesting and I'm going to find out more about the current stage of Perlix/PerlOS development (if any). If anyone knows something interesting, please let us know.
-
Re:Perl in the Linux kernel?
Wasn't someone working on embedding a Perl interpreter in the Linux kernel a while ago? And/or rewriting all of
/bin as Perl scripts using the kernel-based interpreter?I haven't ever heard about it, until I read your comment. After a quick Google searching I found some info about it.
In the Summer 2000 issue of The Perl Journal, Simon Cozens wrote Perlix, The Perl Operating System article:
It started, as so many of these things do, with one of those interminable debates between programmers. You know what I mean. They usually end up with one party shouting something like "Well, fine, I don't care if it's impossible, I'm going to do it anyway!"
This time around, it was me, and the topic in question was an operating system user-space comprised of non-GNU components. An operating system consists of two components: the kernel, like Windows or Linux, which talks to the hardware and directs the action, and the user-space, which is all the programs that you see and use: a shell, Explorer, programs to list directories, move files, read your mail, play games, and so on.
On "free" operating systems, a sizeable proportion of the essential user-space - not the really high-level things like web browsers, but the basic stuff that gets the system up and running - comes from the GNU project, and it was these programs that I wanted to replace.
Don't get me wrong. This wasn't an anti-GNU jihad. But someone had told me it wasn't possible, which was precisely the incentive I needed to get stuck into an idea I'd had a while ago.
Any sensible person would use BSD code here -- the BSD project derived their utilities from de-commercialized sources of Unix, and evolved independently of GNU. But that would be easy. And it wouldn't be fun. If you're going to prove a point, do it with style. So I was going to do it with Perl. [...]
Very interesting text, he mentions Tom Christiansen's Perl Power Tools: The Unix Reconstruction Project - "Our goal is quite simply to reimplement the classic Unix command set in pure Perl, and to have as much fun as we can doing so." I like the simple version of cat:
#!/usr/bin/perl -w
print while <>;Simon Cozens also writes about Gregor Purdy's Perl Shell (psh) - "The Perl Shell is a shell that combines the interactive nature of a Unix shell with the power of Perl. The goal is to eventually have a full featured shell that behaves as expected for normal shell activity. But, the Perl Shell will use Perl syntax and functionality for control-flow statements and other things." - and about Claudio Calvelli's Linux filesystem written in Perl (PerlFS), but the link is dead and I couldn't find the new PerlFS home page (anyone knows it?).
On 2000-09-26 the SF Project: Perlix Kernel was registered by Bill Dahab. The Perlix.sf.net homepage is empty, the Development Status is Planning. The stats show more activity a year ago. Here's the summary:
Perlix is to be an POSIX compliant operating system based on the more graceful language of Perl, in stead of the uglier C. This specific project is to make a kernel written in Perl, and other core components for this operating system
Let me also quote the latest news about Perlix:
Posted By: rydor
Date: 2001-08-05 14:19
Summary: Ok, the deal with perlixFor one thing, work has not yet really begun on the perlix kernel, at most it's been in speculation. The main thing, is that this project really needs Perl6 to go ahead. Also, is needed (i don't really know if Perl6 will allow it) is direct memory writing via perl. If anyone wants to hack it into Perl 5, that would be great. One thing that may be very helpful, is to load Perl into system memory. From there Perl should run fast enough on a more high end computer to support a kernel. Another thing that has been thought about is since a Perl kernel would be relatively dynamic, have on the fly kernel upgrades, via a special script to be written. So if you want to swap in a new network driver that works better, you use this script, and the script would somehow through that driver in quickly. Anyway, If anyone is interested in joining for planning this out, either email me at Rydor@dahab.com or post to the board here, but posting to that board will probably take me a lot longer to figure out that you've done so. Anyway, hopefully we can get this figured out enough to get off the ground, and I hope the project will be lots of fun.
I also found Greg McLearn's Perl Operating System: Initial Planning Stage from 2001-11-23:
The first order of business is to make a bootable Perl kernel. Basically, this will consist of the Perl 4 core components being hacked into a state whereby it can be loaded into memory after booting and executed. In the initial stages, any Perl code to be executed will be stored as a string and handed to the interpreter module. In later stages, the Perl code will be executed from an arbitrary memory buffer.
Making the Perl 4 core components bootable is easier said than done. A memory-management system will have to be created to replace that found in a standard Unix system. As well, any dependency on the I/O subsystem will have to be removed or replaced.
I am basing the initial design on Perl 4 because the source code is far easier to understand and modify. Perl 4 does not contain many oddities currently found in the Perl 5 runtime (such as OOP and macro-hell). [...]
It sounds very interesting and I'm going to find out more about the current stage of Perlix/PerlOS development (if any). If anyone knows something interesting, please let us know.
-
Re:Perl 6 will be a painful, but necessary move ahWell if it makes you feel better, one of the hopes for Perl6 is that it should be able to process Perl5. With Parrot as an abstract backend, Perl6 is just going to be one of several available frontends for the Parrot engine. In principle, there's no reason why a Perl5 frontend can't also be written, just as there is interest in Python frontends, PHP frontends, Scheme, Forth, Tcl, etc.
This may be painful, yes, but it had to be done because the existing Perl codebase was such a mess that a reimplementation was seen as the only way for the language to keep evolving. In return from starting from scratch like this, the Perl community gets a lot of benefits: there will be lots of tasty new syntactic sugar (which you're welcome to ignore by writing Perl5 style code, but which will make a lot of tasks easier if you get used to the syntax), it should be easier to develop extension libraries (no more evil XS hackery, and PDL becomes much less necessary), it will be easier to port Perl to new platforms (like say Palm Pilots), and you get this great language engine out of Parrot.
Plus, the only reference implementation of Perl the language has been Perl the interpreter, and this bothers a lot of people for a lot of reasons. With this reworking, the language specification will be fleshed out in much better detail than has ever existed before, and the official reference implementation should be much easier to understand & work with, with actual abstraction of different working layers that should be replaced just as TCP/IP layers can be replaced. Ideally, this will allow others to come in and develop their own implementations of Perl the language, and that competition could stand to benefit us all.
Still, the funny thing to me is that all this Parrot work was born out of an April Fools Joke last year. Not only was it a funny joke -- unlike say everything that was posted here the other day -- but it has evolved into quite an interesting piece of software architecture. Be careful what you joke about, you just might get it...
:) -
Actual quantum Computing with Perl
I know you were joking, but you really can do Quantum computing with Perl
-
Re:The real reason most companies don't use it...
That about sums it up. Most corporations are not in the software business; they have IT staff, but not programming and development staff....just guys that maintain and secure the servers and networks.
Most corporations are not in the car business, still I prefer to have a choice who can fix my car. You know how expensive are even the simplest things in brand authorized car service companies, now only imagine how much more expensive would it be if you were not even allowed to fix your car anywhere else.
These guys aren't going to desk-check all the code for buffer overflows and the like, they just want to install it, configure it, and apply security patches that the software developers wrote.
That's funny, because that's exactly what I do with my Debian boxes. Well, almost. I install them, configure, and I don't apply security patches, I just run apt-get upgrade.
Don't fool yourself, you don't have to check for buffer overflows when you use Debian and you don't have to check for buffer overflows when you use Windows (well, you can't anyway, so let's just say you don't have to). The difference is when you want to customize the software.
To customize IIS you have to hire Microsoft (good luck with that). To customize Apache you can hire someone from The Apache Software Foundation, you can hire someone from Apache Support Webring, you can hire someone from Covalent Technologies, Red Hat, Thawte, Dana Point Communications, or you can hire me - as we all have the source, we all know the internal API and we all have a right to customize Apache.
You can even use one of your guys that maintain and secure the servers and networks if the customizations you need are easy enough. Remember how Apache httpd internals are deigned. The most fancy customization is usually just a simple mod_perl module.
The same is with ASP versus Perl, MS-SQL versus MySQL, MSVC++ versus GCC, et cetera. Using free software is smarter from the business standpoint than using proprietary software, it's only the transition that's difficult, once you've got into the mess of proprietary file formats, protocols and "standards".
-
Re:Proof that Perl is Evil"People misuse Perl too--if you can call spammers people. Perl is the language of choice for network abuse. That doesn't mean Perl isn't a net win for the world."
--Larry Wall, Third Annual State Of The Onion address, 1999
Peace,
-McD -
What about licenses?
Apple has a point here. In most places minors can not enter into legally binding agreements. This brings up an interesting point. What about licenses like the GPL, the Artistic License, or the Apache License, to name a few. If a minor releases software under one of these licenses, do the licenses apply or are they invalid since the minor can't enter into a legal agreement? How does the law treat a minor's ability to control how their work is treated?
-
Carp and Exporter not GPLCarp and Exporter and most everything else in the Perl world are issued under the Artistic License, not the GPL. The Artistic License is an OSI approved open source license. It's the license that is refered to when all those modules say "This module is freely available and is distributed under the same terms as Perl itself".
The fact that the modules are AL instead of GPL may have an effect on Tilly's case, particularly this sentence (not from the license itself but from Perl's distribution notes):
The bottom line is that this is a kinder and gentler version of the GNU license -- one that doesn't infect your work if you care to borrow from Perl or package up pieces of it as part of a commercial product!
-
Re:Java
> Yes...I tend to agree that they pretend to be more open than they really are. I do take issue with that much more than the proprietary nature of Java itself. I'm not sure what you're referring to about undoced native functions and gcj.
I strongly suggest you read the relevant gcj FAQ entry -- I think you may be underestimating how proprietary it is.
> And youre right that GC doesnt solve all the memory management issues. wish all people thought that ;)
Yep. In fact, when we used Swing last year, we had lots of trouble with memory leaks in the libraries. Aargh!
> Perl is very handy but there are many projects I wouldn't want to touch with it.
What sorts of projects? As long as your programmers are skilled, I think performance is the only real problem.
> That being said I wouldnt use anything else for lots of my scripting and admin tasks.
I find that using map(), grep(), sub{} expressions, and the class system makes manipulating complex data structures very easy. And most performance-sensitive things are done off in C libraries.
> I just can't deal with C++ anymore.... Are generic containers less verbose?
I think so.
using namespace std;
...
map<int,int> foo;
foo[1] = 2;
cout << foo[1];
The main place where I encounter verbosity is in using STL iterators, but even there I don't see that its any less verbose that Java, where you are either using iterators or for loops.
> Its too "dirty" and there are far to many things it leaves you to deal with.
I think C++ is way too complicated, but if you stick to unix, the overall experience isn't too yucky. What irritates me about STL is the compiler-compatibility problems, particularly on MS Windows.
> I think Java's best space is in enterprise-level applications. I dont see Perl being all that useful there nor C++....
I'm not sure what you mean by "enterprise-level applications" -- do you mean things like the EToys ecommerce system? If you mean, "we have to sell this thing to a PHB who will only buy it if it is written in Java," then, okay, I guess that's the only option.
> I'd be curious to know what app server or servlet container youre using. Several are notorious for what you're reporting.
They are using Tomcat. Tomcat 4 doesn't seem to be any faster than 3; both have about 10 times the latency of Apache for "hello world."
We tried out Resin last year, and it was much better than Tomcat, but building your app on a hidden-source-code foundation is just asking for trouble down the line. Not to mention having to deal with licensing issues.
> And anyhow Apache said things are getting better and they have support from others (like IBM).
Then IBM should release an LGPL implementation of the JVM and class libraries, and everyone should use that. As things stand now, Sun has control, and they have demonstrated that they cannot be trusted.
Seriously, read the GCJ FAQ entry and think about it for a minute or two. What Sun is doing is pretty insidious. -
UpdateThe official MacPerl site, which includes a downloads page, might be of interest.
Highlights In MacPerl 5.6.1 shows updates include:
- Update from 5.004 to 5.6.1 sources
- Update to GUSI 2
- New and improved Shuck
- Many bugs fixed
- More modules and utilities included
-
Re:My perl is not as grand as it once was...
My post was actually a joke (I'm surprised that someone has moderated it as Troll! If that moderator thought I don't like Perl, he/she obviously hasn't read my code...) and this was a parody for Java's "write once, run everywhere". ...but I do not think that perl is the "Write Once, Read Nowhere" langue you make it out to be ^_^Just for a little fun, I thought I'd try out my rusting perl tricks and unroll your silly script.
You're a first person I know about, who was ever interested in understanding this code. This is my original, clean version:$c = 'plfeY04jaJnYI';
I'm amazed, that your code is almost identical, congratulations! I like this program, because looking at it (the clean version) it's impossible to know how long it would take to get the result. For example your domain voila.fr would be written if $c was frmHZ0u6Ne2HQ but it takes about an hour to crack on my machine, while my domain in plfeY04jaJnYI is cracked in only 4 seconds. It would take over 2 years and 7 months to crack this xxFHuIaD7CdpI, which is the worst case, zzzzzzzz, the last key guessed by my program. So, the average time for guessing random keys (containing 1 to 8 lowercase letters) is over one year!
$s = substr $c, 0, 2;
for $l (1..8) {
for ('a' x $l .. 'z' x $l){
if($c eq crypt($_, $s)) {
print "$_.$s\n";
exit;
}
}
}If you want to see a really good password cracking program, check out Alec Muffett's great and famous Crack. It's really great, especially when you have good dictionaries. If you want to check if your password is easily cracked by Crack, you can use Alec Muffett's CrackLib. Check out my online Password-Guessability-O-Meter, I wrote it some time ago to demonstrate to one of my clients how does the CrackLib work. You just enter your desired password, and it tells you if (and why) it is easy to guess, using English, Polish, Czech, French and Latin dictionaries.
I use CrackLib for online registrations CGI scripts etc. so users can't have silly and easy to guess passwords. It can also be used with passwd program. Great library, and easy to use (there's Crypt::Cracklib Perl interface), but may be quite difficult to set up for the first time.
Not very difficile, Mister shiny@rfl.pl, but I shall compliment you for at least trying to obfuscate with the silly "q//" perl operateur ^_^
Thanks. :) I like it too. That's the most recent obfuscation, if I remember correctly. When I started to experiment with q// using q,x, and q.x. and q;x; etc. I was even trying to use something like this:$q=q,p,.q,l,.q,f,.q,e,.q,Y,.q,0,.q,4,.q,j,.q,a,.q
(in one line and with no spaces) but it looks terrible, as you can see., J,.q,n,.q,Y,.q,I,;The "if" statement is another ruse; suffixed "if" is in fact called before the condition of the "if" statement, and he uses this to initialise $q apparently after it's been first used. The above code is in fact equal to this:
Yes, this is exactly the original code, and this is exactly the way I was thinking. You're very good.$q = 'plfeY04jaJnYI';
$x = substr $q, 0, 2; :)And it makes itself apparent that $q is the crypt hash (henceforth called $crypt) and $x is the salt ($salt).
The original variables were $c and $s, I changed them to $q and $x for easy mistakes with q// quoting and x repetition operator.for (++$_..$_<<3){...}
Now you are just being silly
:-) $_ is not used yet and thus is 0, and ++0 is of course 1. 1<<3 is 8. :) 1..8 looked just to clear and simple... And that way I have 3 independent values of $_ variable (i.e. the original global $::_ is two times localized) in 3 nested scopes (main program, outer loop and inner loop), which makes it more interesting.for($i = 1; $i <= 8; ++$i) {...}
Actually in newer versions of Perl, the foreach loop is faster than the C-style for loop. See perlop manpage: Range Operators and perlsyn manpage: Foreach Loops.Which not only looks simpler, but runs faster too ^_^
I just run this benchmark:
#!/usr/bin/perl -w
and with Perl 5.6.1 I got this results:
use Benchmark;
sub s1{ for ($i = 1; $i <= 1_000_000; ++$i) { } }
sub s2{ for (1 .. 1_000_000) { } }
$t1 = timestr timeit 100, \
$t2 = timestr timeit 100, \
print "1. $t1\n2. $t2\n";1. 103 wallclock secs (87.77 usr + 0.15 sys = 87.92 CPU) @ 1.14/s (n=100)
2. 60 wallclock secs (51.93 usr + 0.04 sys = 51.97 CPU) @ 1.92/s (n=100)But in my code this loop has only eight iterations, where the 8th one takes two years, so the loop control overhead itself doesn't really matter here. The inner loop is more important but crack() function takes most of the time, anyway.
Older versions of Perl (I don't know which exactly) created a temporary array for the range operator in foreach loop, so the code like:
for (1
could easily take all of the memory, but now it's fixed. Fortunately, it doesn't create a temporary array any more, and it's highly optimized, so it's safe to use it now for large ranges. .. 1_000_000_000) { ... }The "and die" bit just is taking advantage of the short-circuit boolean operateur système. The "die" only is executing when $crypt (the origin hash) and the encrypted form of the current guess are equal, in which case the key has been found and we quit ^_^ I changed it to a nicer looking "print" statement for further clairitie.
Yes, there were print and exit in the original version. You have exactly reconstructed my way of thinking. Well done. :)I think you're very good, really. Most of people have no idea how to analyze such obfuscated code. Actually I'm quite disappointed that decrypting my code was so easy for you...
:)I'll tell you why and how I wrote this program. I was inspired by this code:
#!/usr/bin/perl
and few JAPH signatures. I wanted to write a small program, that it would be impossible to tell what it writes, until you run it. Most of such programs are very obfuscated but after enough work you can usually find the printed message, without running them. So I thought that the message could be ciphered using some one-way alghoritm, like crypt(3) or MD5, and the code would just brute-force crack it. That way it's really impossible to tell what the message is, until you run the code. The code itself only cracks, but doesn't know what is being cracked and when it finishes. Using crypt(3) had this advantage, that it has 2-character salt, which can act as country code in domain name.
@a=(Lbzjoftt,Inqbujfodf,
Hvcsjt); $b="Lbssz Wbmm" ;$b =~ y/b-z/a-z/ ; $c =
" Tif ". @a ." hsfbu wj" ."suvft pg b qsphsbnnfs"
. ":\n";$c =~y/b-y/a-z/;
print"\n\n$c ";for($i=0;
$i<@a; $i++) { $a[$i] =~
y/b-y/a-z/;if($a[$i]eq$a
[-1]){print"and $a[$i]." ;}else{ print"$a[$i], ";
}}print"\n\t\t--$b\n\n";So I wrote the first working version and started to make it as small as possible. Originally it didn't have to be obfuscated, just small. This is the smallest version I've written so far:
$c='plfeY04jaJnYI';$s=substr$c,0,
with 98 characters. But today I shrinked it some more, to 93 characters:
2;for(1..8){for('a'x$_..'z'x$_){
die"$_.$s\n"if crypt($_,$s)eq$c}}$c='plfeY04jaJnYI';$s=substr$c,
and few minutes ago (while I write this comment!) I found a better idea and wrote this:
0,2;for(1..8){$c eq crypt$_,$s
and die"$_.$s"for'a'x$_..'z'x$_}$c='plfeY04jaJnYI';$s=substr$c,0,2;$k=
which having only 79 characters is my record so far (thanks to Perl's magical auto-increment operator) and finally fits in one line!
'a';$k++while$c ne crypt$k,$s;die"$k.$s";Hopefully that wasn't too difficile to follow, my english is not perfect.
Your english is OK, don't worry. Actually, I like the way you use French spelling for some words, like difficile. It's like a French accent in written text, very nice in my opinion.Just remember, Mr. shiny@rfl.pl, no langue is completely impenetrable (except perhaps Intercal, but that's a small bit pathological
Good point. :-) :) I wonder if these guys tried Intercal when proving the impossibility of obfuscating programs... I personally like Unlambda and Brainf***.This Unlambda program "calculates and prints the Fibonacci numbers (as lines of asterisks)":
```s``s``sii`ki
`k.*``s``s`ks
``s`k`s`ks``s``s`ks``s`k`s`kr``s`k`sikk
`k``s`kskI wanted to show a Hello world example of Brainf***, but I got this error:
Lameness filter encountered. Post aborted!
Visit Esoteric Topics in Computer Programming, great stuff if you want to go mad.
Reason: Please use fewer 'junk' characters.You like Perl, so if you know Inline::C and Inline::CPR (if you don't, read Pathologically Polluting Perl by Brian Ingerson) you may enjoy understanding this code:
#!/usr/bin/cpr
It's great, once you really understand it.
int main(void) {
CPR_eval("use Inline (C => q{
char* greet() {
return \"Hello world\";
}
})");
printf("%s, I'm running under Perl version %s\n",
CPR_eval("&greet"),
CPR_eval("use Config; $Config{version}"));
return 0;
}Are you up to date with Perl 6 development? It's going to be great and extremely powerful language. Read Larry Wall's Apocalypses and Damian Conway's Exegeses if you're interested:
- Apocalypse 1: The Ugly, the Bad, and the Good (April 2, 2001)
- Apocalypse 2: Fundamental data types, variables and the context and scoping of the language (May 3, 2001)
- Exegesis 2 (May 15, 2001)
- Apocalypse 3: Operators (October 2, 2001)
- Exegesis 3 (October 3, 2001)
- Apocalypse 4: Syntax (January 18, 2002)
-
Re:Perl 6
* waits for someone to compare it to
.NET, only with Perl as the base language rather than C#Um, do you mean like this?
-
Re:SSSCA Impact on Viruses