diff --git a/perforate.sh b/perforate.sh
index 7c8c5ff92fa5cb5fab6f96ea171c1dd8c23a3a2d..c3c7eee4ce27da37858bdc922f17487adadc0bc7 100755
--- a/perforate.sh
+++ b/perforate.sh
@@ -12,6 +12,9 @@ usage() {
     printf -- "-e, --extract       extract scop\n"
     printf -- "-p, --perforate     perforate scop\n"
     printf -- "-g, --generate      generate perforated program\n"
+    printf -- "-s, --statement     statement to perforate\n"
+    printf -- "-l, --level         level to perforate\n"
+
 }
 
 extract_scop() {
@@ -27,7 +30,7 @@ run_pluto() {
 }
 
 generate() {
-    $CLOOG -openscop "$1" >"$2"
+    $CLOOG -openscop "$1" > "$2"
 }
 
 # default values
@@ -89,7 +92,18 @@ if [ "$cmd_extract" = "yes" ]; then
 fi
 
 if [ "$cmd_perforate" = "yes" ]; then
-    perforate "$scop" "$perforated" "$statement" "$level"
+    perfin="$(mktemp)"
+    perfout="$(mktemp)"
+    cat "$scop" > "$perfin"
+    IFS="_"
+    for l in $level; do
+        IFS=""
+        perforate "$perfin" "$perfout" "$statement" "$l"
+        tmp="$perfin"
+        perfin="$perfout"
+        perfout="$tmp"
+    done
+    cat "$perfin" > "$perforated"
 fi
 
 if [ "$cmd_generate" = "yes" ]; then