Re: help converting some perl code to python
The '..' operator is the flip-flop operator in perl. (It is rarely used.) It is exactly the same as the 'range' type operator. It returns false until the first condition is met, then it returns true until the last condition met, then it returns false. You could create a flip-flop with a python closure (t_cond and f_cond are functions that take a value and return True of False) def make_flip_flop(t_cond, f_cond): state = [False] def flip_flop(val): if state[0] and f_cond(val): state[0] = False elif not state[0] and t_cond(val): state[0] = True return state[0] return flip_flop -- http://mail.python.org/mailman/listinfo/python-list
Re: help converting some perl code to python
[EMAIL PROTECTED] wrote: > i need help with converting a piece of perl code to python > the problem is the '..' operator in perl. Is there any equivalent in > python? Here is a class that emulates the .. operator: import sys import re start, files, end = map(re.escape, ["[start]", "[files]", "[end]"]) class Section(object): def __init__(self, start, end): self.start = re.compile(start).match self.end = re.compile(end).match self.inside = False def __contains__(self, line): result = self.inside if result: if self.end(line): self.inside = False else: if self.start(line): result = self.inside = True return result first = Section(start, files) second = Section(files, end) for line in sys.stdin: line = line[:-1] if line in first: # your code if line in second: # your code However, the simpler #untested import sys start, files, end = "[start]", "[files]", "[end]" keys = set([start, files, end]) key = None for line in sys.stdin: line = line[:-1] if line in keys: key = line elif key == start: # your code elif key == files: # your code might work even better because 'your code' doesn't get to see the sections' begin/end markers. Peter -- http://mail.python.org/mailman/listinfo/python-list
Re: help converting some perl code to python
[EMAIL PROTECTED] wrote: > the problem is the '..' operator in perl. Is there any equivalent in > python? I can't think of anything with a similar operation, to be honest. I'd try using while loops which look out for the next section delimiter. -- Ben Sizer. -- http://mail.python.org/mailman/listinfo/python-list
Re: help converting some perl code to python
[EMAIL PROTECTED] enlightened us with: > the problem is the '..' operator in perl. Is there any equivalent in > python? any suggestions ? I have a suggestion: stop assuming we know perl, and explain what this '..' operator does. Sybren -- The problem with the world is stupidity. Not saying there should be a capital punishment for stupidity, but why don't we just take the safety labels off of everything and let the problem solve itself? Frank Zappa -- http://mail.python.org/mailman/listinfo/python-list