diff --git a/Tools/scripts/objgraph.py b/Tools/scripts/objgraph.py
index a21797d..c6bbe66 100755
--- a/Tools/scripts/objgraph.py
+++ b/Tools/scripts/objgraph.py
@@ -1,4 +1,4 @@
-#!/usr/local/python
+#!/usr/local/bin/python
 
 # objgraph
 #
@@ -21,9 +21,9 @@
 
 import sys
 import string
-import path
+import os
 import getopt
-import regexp
+import regex
 
 # Types of symbols.
 #
@@ -33,7 +33,7 @@
 
 # Regular expression to parse "nm -o" output.
 #
-matcher = regexp.compile('(.*):\t?........ (.) (.*)$')
+matcher = regex.compile('\(.*\):\t?........ \(.\) \(.*\)$')
 
 # Store "item" in "dict" under "key".
 # The dictionary maps keys to lists of items.
@@ -66,12 +66,13 @@
 #
 def readinput(file):
 	while 1:
-		s = file.readline(200) # Arbitrary, but reasonable limit
+		s = file.readline()
 		if not s:
 			break
-		# If you get an exception on this line,
+		# If you get any output from this line,
 		# it is probably caused by an unexpected input line:
-		(ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.exec(s)
+		if matcher.search(s) < 0: s; continue # Shouldn't happen
+		(ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.regs[:4]
 		fn, name, type = s[r1a:r1b], s[r3a:r3b], s[r2a:r2b]
 		if type in definitions:
 			store(def2file, name, fn)
@@ -160,7 +161,8 @@
 		optlist, args = getopt.getopt(sys.argv[1:], 'cdu')
 	except getopt.error:
 		sys.stdout = sys.stderr
-		print 'Usage:', path.basename(sys.argv[0]), '[-cdu] [file] ...'
+		print 'Usage:', os.path.basename(sys.argv[0]),
+		print           '[-cdu] [file] ...'
 		print '-c: print callers per objectfile'
 		print '-d: print callees per objectfile'
 		print '-u: print usage of undefined symbols'
diff --git a/Tools/scripts/pdeps.py b/Tools/scripts/pdeps.py
index df20894..8cf573f 100755
--- a/Tools/scripts/pdeps.py
+++ b/Tools/scripts/pdeps.py
@@ -1,4 +1,4 @@
-#! /usr/local/python
+#! /usr/local/bin/python
 
 # pdeps
 #
@@ -21,8 +21,8 @@
 
 
 import sys
-import regexp
-import path
+import regex
+import os
 import string
 
 
@@ -58,15 +58,15 @@
 
 # Compiled regular expressions to search for import statements
 #
-m_import = regexp.compile('^[ \t]*from[ \t]+([^ \t]+)[ \t]+')
-m_from = regexp.compile('^[ \t]*import[ \t]+([^#]+)')
+m_import = regex.compile('^[ \t]*from[ \t]+\([^ \t]+\)[ \t]+')
+m_from = regex.compile('^[ \t]*import[ \t]+\([^#]+\)')
 
 
 # Collect data from one file
 #
 def process(filename, table):
 	fp = open(filename, 'r')
-	mod = path.basename(filename)
+	mod = os.path.basename(filename)
 	if mod[-3:] == '.py':
 		mod = mod[:-3]
 	table[mod] = list = []
@@ -77,17 +77,17 @@
 			nextline = fp.readline()
 			if not nextline: break
 			line = line[:-1] + nextline
-		result = m_import.exec(line)
-		if not result:
-			result = m_from.exec(line)
-		if result:
-			(a, b), (a1, b1) = result
-			words = string.splitfields(line[a1:b1], ',')
-			# print '#', line, words
-			for word in words:
-				word = string.strip(word)
-				if word not in list:
-					list.append(word)
+		if m_import.match(line) >= 0:
+			(a, b), (a1, b1) = m_import.regs[:2]
+		elif m_from.match(line) >= 0:
+			(a, b), (a1, b1) = m_from.regs[:2]
+		else: continue
+		words = string.splitfields(line[a1:b1], ',')
+		# print '#', line, words
+		for word in words:
+			word = string.strip(word)
+			if word not in list:
+				list.append(word)
 
 
 # Compute closure (this is in fact totally general)
