كيف يمكنني تمرير البيئة من وجهة نظري تطبيق ويب بيثون لبرنامج بيرل؟
-
06-07-2019 - |
سؤال
وكيف يمكنني ضبط٪ ENV بيرل لتقديم برنامج نصي بيرل في سياق تطبيق الويب الخاص بي؟
ولدي موقع على شبكة الانترنت، وكتب في لغة مختلفة من بيرل (بايثون). ومع ذلك أنا بحاجة إلى استخدام تطبيق بيرل، الذي يتكون من ملف .PL:
#!/usr/bin/env perl
"$ENV{DOCUMENT_ROOT}/foo/bar.pm" =~ /^(.+)$/;
require $1;
my $BAR = new BAR(
user => 'foo',
);
print $bar->get_content;
... وbar.pm وحدة، والذي يعتمد على "$ENV{HTTP_HOST}"
، "$ENV{REQUEST_URI}"
،
"$ENV{REMOTE_ADDR}"
و"$ENV{DOCUMENT_ROOT}"
.
وكيف يجب أن تحدد هذه التجزئة؟ هذا هو أول تجربة للغاية مع بيرل، لذلك قد يكون في عداد المفقودين شيء واضح حقا هنا:)
المحلول
إذا كنت تفريخ هذه العملية بيرل من التعليمات البرمجية بايثون الخاص بك (بدلا من "مباشرة من خادم")، وهناك عدة طرق لتعيين بيئة عملية الطفل من بيئة عملية الأصل بيثون، اعتمادا على ما كنت باستخدام ل "تفريخ".
وعلى سبيل المثال، إذا كنت تستخدم subprocess.Popen
، يمكنك تمرير وسيطة env=
لتعيين القاموس تريدها، كما يختلط <لأ href = "http://docs.python.org/library/subprocess.html" = "نوفولو noreferrer"> مستندات شرح:
إذا الحياة الفطرية ليست بلا، بل يجب أن تكون الخرائط التي تحدد بيئة المتغيرات لعملية جديدة. هؤلاء وتستخدم بدلا من وراثة العملية الحالية "بيئة، وهي السلوك الافتراضي.
اقتباس فقرة>نصائح أخرى
والتجزئة %ENV
الخاصة بيرل هي واجهة للبيئة. (تحت غطاء محرك السيارة، فإنه يدعو getenv
وputenv
حسب الاقتضاء.)
وعلى سبيل المثال:
$ cat run.sh
#! /bin/bash
export REMOTE_ADDR=127.0.0.1
perl -le 'print $ENV{REMOTE_ADDR}'
$ ./run.sh
127.0.0.1
يجب وخادم الويب الخاص بك إلى أن وضع هذه متغيرات البيئة.