كيف يمكنني تمرير البيئة من وجهة نظري تطبيق ويب بيثون لبرنامج بيرل؟

StackOverflow https://stackoverflow.com/questions/1022694

  •  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
يجب

وخادم الويب الخاص بك إلى أن وضع هذه متغيرات البيئة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top