#!/usr/bin/perl
# Brainfuck Interpreter written in perl
#
# This source is in the public domain. Do what you want with it.
# (I am too lazy to choose a license)
#
# (c) 2003 Joachim Breitner <mail@joachim-breitner.de>
# 
# Thx to mako
#
# Usage:
# ./bfi filename.b "Input"

@c=grep {y/<>+-[],.//} split(//,join('',`cat $ARGV[0]`));shift @ARGV;
@d=split(//,join(' ',<@ARGV>));
$#a = 100;
while($n=$c[$c]){
  if ($n eq '>') {$a++}
  if ($n eq '<') {$a--}
  if ($n eq '+') {$a[$a]++}
  if ($n eq '-') {$a[$a]--}
  if ($n eq ',') {$a[$a] = ord(shift(@d))}
  if ($n eq '.') {print chr($a[$a])}
  if ($n eq '[') {push @s, $c}
  if ($n eq ']') {$j = pop @s; $c=$j-1 if $a[$a]}
} continue {$c++}

