3 ms·
People always recommend Perl over a shell script but I've never seen a situation where it makes sense. Having written very little Perl, it seems like its only s
by arjie 10y ago
People always recommend Perl over a shell script but I've never seen a situation where it makes sense. Having written very little Perl, it seems like its only strength is that it's present everywhere and has a large library.
Language-wise, Python is far superior and has a large ecosystem and these days it has ubiquity too.
I'd be interested in the argument for Perl over shell scripts that does not apply to just writing the program in a modern language.
- therealmarv 10y agoHave you ever done string manipulation (also RegEx) over many files in Perl? I think it's in this regard superior than anything else, even python when looking at syntax.
- Outpox 10y agoFor someone who hasn't done any Perl yet and only little Python could you explain why?
- mfontani 10y agoFor the specific thing the OP mentioned, this: $ perl -pi -e 's/MY_NAME/Marco/g' ./*.txt ... would go through all "*.txt" files in the directory, and globally replace the token "MY_NAME" with "Marco". Great for a {poor man's,simple and easy to understand} basic template system to be used inside a bash script ;)
- JetSpiegel 10y agoOverkill. Just use: $ sed -i 's,MY_NAME,Marco,g' *.txt
- therealmarv 10y agonope. I've dealt recently with some big DB files (I think GB size) and regex doing the same. sed is a lot slower than perl for this kind of task.
- jstimpfle 10y agoI don't know how sed and perl compare, but I know these things: Use a C local (e.g. LANG=C or LC_ALL=C) for dramatic speed up of tools like grep/sort and probably also sed. If you don't do that, usually the UTF-8 parser kicks in, which is a lot slower. Perl is actually well known to have a non-optimal regex implementation: https://swtch.com/~rsc/regexp/regexp1.html https://swtch.com/~rsc/regexp/regexp1.html That said, I don't know how fast it is (what optimizations it has) at simple string substitutions.
- arjie 10y agoI have not. I usually use `sed` in such instances but admitting the superiority of Perl in such instances surely this is insufficient on its own to use Perl? Seems like a rare use-case and if that script grows large then Python has superior language features but if the script stays small, then a Bash script with `sed` will do just as well.
- kagamine 10y agothe problem with Python where I work is that developers are openly hostile toward it. We're predominantly .NET with just a couple of products running on Linux servers. I'm not a .net guy despite the pressure, and have been teaching myself python in my own time, but the the rest of the staff including management are never going to look for Python as a skill when hiring. EVER. But of course 2.7 is sitting there on the CentOS servers never used, while bash scripted cron jobs run amok and frequently fail (because they were written by the wrong people imo). I would love to see Python utilized, and maybe with VSCode and MS integrating open source into the .NET world it will eventually come to enterprise (where I work).
- therealmarv 10y agoIt's already there in the big Visual Studio: https://www.visualstudio.com/vs/python/ https://www.visualstudio.com/vs/python/ And it's a dream in VSCode + the most popular python extension https://github.com/DonJayamanne/pythonVSCode https://github.com/DonJayamanne/pythonVSCode
- kagamine 10y agoit's not about what MS put in VS and VSCode, it's about changing the minds of .NET developers who used are to C# syntax/grammar and hate Python because it doesn't fit their world-view. "Already in VS" is meaningless in a .NET enterprise company.
- therealmarv 10y agoI feel sorry for you. Fanatism towards any language/eco-system, no matter if .net, Java, Ruby, Python (also have seen the same with Python developers) is something I really don't like.