I'm been a full Python convert for over a year now. Perl is just too cumbersome at times. I think the artist who draws XKCD has made the same choice. The one thing that still takes me back to Perl is the ultra-handy <> "diamond operator". You can't deny Perl's dominance when it comes to string processing. Look at this elegance:
#!/usr/bin/perl
while (<>) {
print
}
Every time I encounter a string processing problem where I have to work with multiple files, I go back to Perl. I didn't think Python could do this. Python should have the same ability as Perl's diamond:
def diamond():
"""
diamond()
Pre: Nothing.
This is my attempt to recreate the very handy diamond operator found in
Perl, which is my only reason for still using that language.
To use the code:
for line in diamond():
process(line)
"""
import sys
if len(sys.argv[1:]) > 0:
for file in sys.argv[1:]:
if file == '-':
for line in sys.stdin:
yield line
else:
f = open(file, 'r')
for line in f:
yield line
f.close()
else:
for line in sys.stdin:
yield lineWhat does this do? It checks the sys.argv variable for file names on the command line and iterates through each line of each file. If it can't find a file, it defaults to standard input.
Of course, before I start to write code, I should always use Google first. There exist a module called "fileinput" which does the same thing.
D'oh! Hey... it's practice.
