[Chicago-talk] transl. php to perl?

Warren Smith warren at warrenandrachel.com
Mon Mar 28 05:50:27 PST 2005


Ahh agi. Perhaps you should look for Asterisk::AGI. It does all this
work for you ;). But anyways, here goes...

#!/usr/bin/perl

use strict;
use warnings;

my $debug = 0;
my %agi = ();

while(<STDIN>) {
	chomp; # get a line from stdin and put it into $_
	last unless $_; # exit early if $_ is empty
	print "read: $_\n" if $debug;
	my ($var, $value) = split /: /; # split $_ into two parts
	$var =~ s/^agi_//; # strip off agi_ prefix
	$value =~ s/\s*(.*?)\s*/$1/; # trim $value
	$agi{$var} = $value; # save value
}

On Mon, 2005-03-28 at 05:24 -0800, Richard Reina wrote:
> perl is the only language I know, and even that is
> debatable.  So any of you know enogh php to help me
> translate the script below? I know which lines are the
> comments that's about it.
> 
> 
> #!/usr/bin/php4 -q
> <?php
> ob_implicit_flush(true);
> set_time_limit(6);
> $in = fopen("php://stdin","r");
> $stdlog = fopen("/var/log/asterisk/my_agi.log", "w");
> // toggle debugging output (more verbose)
> $debug = false;
> // Do function definitions before we start the main
> loop
> function read() {
> 	global $in, $debug, $stdlog;
> 	$input = str_replace("\n", "", fgets($in, 4096));
> 	if ($debug) fputs($stdlog, "read: $input\n");
> 	return $input;
> }
> 				
> // parse agi headers into array
> while ($env=read()) {
> 	$s = split(": ",$env);
> 	$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
> 	if (($env == "") || ($env == "\n")) {
> 		break;
> 	}
> }
> _______________________________________________
> Chicago-talk mailing list
> Chicago-talk at pm.org
> http://mail.pm.org/mailman/listinfo/chicago-talk
> 



More information about the Chicago-talk mailing list