import IO; import Water; import Hopper; import Recipe; import Authorisation; import Exception; import Configuration. config = new Configuration or die 'No configuration'; except = new Exception( ) or die 'No exceptions'; # ;^) try (ex) { io = new IO( config ); Water = new WaterClass( config ); hoppers{} = new Hoppers( config ); auth = new Authorisation( config ); } else { except( ex ); } while( water.ready ) { selectedRecipe = io.displayList( recipes ); if( auth( selectedRecipe ) and IO.cupReady( timeout ) ) { try (ex) { hoppers{ ingredient }.dispense( quantity ) while (ingredient, quantity) = selectedRecipe.iterate; } else { IO.displayException( ex ); delete recipe{ $_ } for grep{ $_.uses( ex.missingIngredient ) @recipes; IO.requestReplenishment( ex.missingIngredient ); } } else { IO.displayStatus( 'Timeout: Try again' ); } }