splitting multiple joined words, port from perl to PHP Though i have never worked on perl, not even once. 
I have ported the perl code into PHP and it seems like giving a correct result. But as I am going to use it on production server. 

I want this code to get it reviewed, please let me know if there is any problem in the porting from perl to PHP.

#!/usr/bin/perl

use strict;

my $WORD_FILE = '/usr/share/dict/words'; #Change as needed
my %words; # Hash of words in dictionary

# Open dictionary, load words into hash
open(WORDS, $WORD_FILE) or die "Failed to open dictionary: $!\n";
while (&lt;WORDS&gt;) {
  chomp;
  $words{lc($_)} = 1;
}
close(WORDS);

# Read one line at a time from stdin, break into words
while (&lt;&gt;) {
  chomp;
  my @words;
  find_words(lc($_));
}

sub find_words {
  # Print every way $string can be parsed into whole words
  my $string = shift;
  my @words = @_;
  my $length = length $string;

  foreach my $i ( 1 .. $length ) {
    my $word = substr $string, 0, $i;
    my $remainder = substr $string, $i, $length - $i;
    # Some dictionaries contain each letter as a word
    next if ($i == 1 &amp;&amp; ($word ne "a" &amp;&amp; $word ne "i"));

    if (defined($words{$word})) {
      push @words, $word;
      if ($remainder eq "") {
        print join(' ', @words), "\n";
        return;
      } else {
        find_words($remainder, @words);
      }
      pop @words;
    }
  }

  return;
}


The PHP code which I want a review on:

&lt;?php

$WORD_FILE = file_get_contents ("word.txt") ;

$temp_arr = explode("\n", $WORD_FILE);

foreach ($temp_arr as $str)
{
    $words [$str] = 1 ;
}

$processed = Array () ;

find_words ($argv[1]) ; 
print_r ($processed) ;

function find_words ($str)
{
    global $words ;
    global $processed ;

    $string = $str ;
    $length = strlen ($str) ;

    for ($i = 1 ; $i &lt;= $length + 1; $i++)
    {
        $word = substr ($string, 0, $i) ;
        $remainder = substr ($string, $i, $length - $i) ;

        if ($i == 1 &amp;&amp; ($word != "a" &amp;&amp; $word != "i")) ;

        if (array_key_exists ($word, $words))
        {
            array_push($processed, $word) ;
            if ($remainder == "")
            {
                return ;
            }
            else
            {
                find_words ($remainder, $words) ;
            }
            echo "popping the word " . array_pop ($words) . "\n";
        }
    }

    return ;
}

?&gt;
This should be find_words() php equivalent,
(note perl %words is here $Gwords as perl makes distinction between hashes/dictionaries and arrays)

function find_words() {
    global $Gwords;

    # Print every way $string can be parsed into whole words
    $words = func_get_args();
    $string = array_shift($words);
    $length = strlen($string);

    foreach (range(1, $length) as $i) {

        $word = substr($string, 0, $i);
        $remainder = substr($string, $i, $length - $i);
        # Some dictionaries contain each letter as a word
        if ($i == 1 &amp;&amp; ($word !== "a" &amp;&amp; $word !== "i")) continue;

        if (isset($Gwords[$word])) {
            $words[]= $word;
            if ($remainder === "") {
                echo join(' ', $words), "\n";
                return;
            }
            else {
                # find_words($remainder, @words);
                call_user_func_array(
                    "find_words",
                    array_merge((array)$remainder, $words)
                );
            }
            array_pop($words);
        }
    }

    return;
}