Просто вы определили «phrasedocs» внутри функции, которая не видна снаружи, и возвращение функции должно быть зафиксировано в переменной, отредактируйте ваш код:
dirPath = 'C:/Users/J/kagglemoviereviews/corpus'
phrasedata = processkaggle(dirPath, 5000) # returns 'phrasedata'
phraselist = random_phrase(phrasedata) # returns 'phraselist'
phrasedocs = word_token(phraselist) # returns 'phrasedocs'
phrasedocs2 = process_token(phrasedocs) # returns phrasedocs2
В этом случае я рассмотрел бы поставку законченного приложения вместе с его собственным Perl. Вы добираетесь для выбора любой версии, которую Вы любите и любые модули, которые Вы любите. Скомпилируйте все, организуйте все в каталог, затем смолите результат. Для развертывания скопируйте файл и untar. Используйте совет, который другие уже отметили о путях поиска библиотеки и т.д. В сущности Ваше приложение получает свой собственный стек.
Теперь, прием там является кросс-компиляцией. Почему Вы разрабатываете на Cygwin? Это - цель также? Существует ли причина, у Вас нет HP/UX или машины разработки Соляриса? Какая архитектура Вы предназначение (RISC, SPARC, Intel, и т.д.). Если Вы не можете заставить аппаратные средства выполнять их, получать некоторые виртуальные машины для Ваших целей и разрабатывать там.
Кроме этого, можно установить модули где угодно, у Вас есть полномочия. См. perlfaq8:
Я не попробовал эту конкретную функцию, но perl2exe говорит, что поддерживает кросс-платформенные сборки.
При компиляции сценария Perl со всеми его зависимостями от Windows с Cygwin и выполнении его Солярис просто не собирается работать.
Теперь вопрос: у Вас есть доступ к компилятору на том компьютере Соляриса? Именно, не потому что у Вас нет корневого доступа, Вы не можете скомпилировать и установить модули Perl в своем корневом каталоге при помощи:
perl Makefile.PL PREFIX=$HOME
Если Вы имеете CPAN в наличии в своей системе Соляриса, можно установить префикс в оболочке CPAN этот путь:
perl -MCPAN -e shell
;conf makepl_arg PREFIX=/path/to/your/home/directory
Чтобы Ваш сценарий работал, можно или запустить жемчуг с -I $HOME
переключатель командной строки, например:
perl -I $HOME script.pl
Ваша другая опция состояла бы в том, чтобы поместить это в начале Вашего сценария
use lib $ENV{'HOME'};
Если у Вас есть компилятор в каждой из Ваших систем (и некоторые другие инструменты, необходимые, настраивают как grep), необходимо не только смочь скомпилировать модули, но необходимо также смочь создать собственные исполняемые файлы жемчуга.
Установите свою переменную среды PERLLIB
к Вашему персональному каталогу lib Perl или использованию-I переключатель командной строки к Perl для указания на это.
Если у Вас есть доступ к машине HP-UX, можно скомпилировать, Ожидают там и устанавливают его в каталоге. Но кросс-компиляция от Windows до HP-UX является, вероятно, намного более трудной. Необходимо было бы создать кросс-компилятор GCC.
Вы захотите local::lib. После того как Вы сделали это, чистые модули Perl должны работать кросс-платформенные, но необходимо будет определить и переустановить скомпилированные модули на внешней платформе. Сделайте начальная установка на реальном Unix, cpan на cygwin является медленной.
Я несколько раз натыкался на это в моих системах работы. У нас есть основная установка Perl 5.8, и у меня нет способности добавить модули. Вот решение, которое я использую:
Ваш код должен сделать следующее: во-первых, используйте любые модули, которые обычно устанавливались, затем не смещают Вашу @INC переменную среды для пользований местными библиотеками:
# Declare Includes --------------------------------------------------------------------------------
use Getopt::Long;
use vars qw($VERSION);
use DirHandle;
use FileHandle;
# Force perl to use our local 'lib' directory for imported modules, this allows us to
# use modules without having to install them in th emain perl assembly. However, this
#also prevents these modules from being used in other projects.
BEGIN { unshift @INC, "lib"; }
use Error qw(:try);
use SOAP::Transport::HTTP;
#use LWP::Protocol::https;
use XML::Simple;
use XML::Writer;
use XML::Writer::String;
Протест к этому методу состоит в том, что некоторые модули Perl не используют метод 'lib' или имеют дополнительные зависимости. Если Вы сталкиваетесь с проблемами, исследуете Make-файл. МН для модуля и видят то, что он делает.