2010-12-28 14 views
20

हम दो अलग-अलग पर्ल स्क्रिप्ट के बीच वैश्विक चर को कैसे साझा या निर्यात करते हैं।दो अलग-अलग पर्ल स्क्रिप्ट के बीच वैश्विक चर को कैसे साझा/निर्यात करें?

first.pl

#!/usr/bin/perl 
use strict; 
our (@a, @b); 
......... 

second.pl

#!/usr/bin/perl 
use strict; 
require first.pl; 

मैं वैश्विक चर का उपयोग करना चाहते हैं (@a, @b) में घोषणा की:

यहाँ स्थिति है first.pl

यह भी मान लें कि दूसरी perl फ़ाइल में एक चर है जो पहली perl फ़ाइल के समान है। लेकिन मैं पहली फाइल के चर का उपयोग करना चाहता हूं। इसे कैसे प्राप्त करें?

उत्तर

15

वे वैश्विक चर साझा करेंगे, हां। क्या आप इसके साथ कुछ समस्या देख रहे हैं?

उदाहरण:

first.pl:

#!/usr/bin/perl 

use strict; 
use warnings; 

our (@a, @b); 

@a = 1..3; 
@b = "a".."c"; 

second.pl:

#!/usr/bin/perl 

use strict; 
use warnings; 

require "first.pl"; 

our (@a,@b); 
print @a; 
print @b; 

देते:

$ perl second.pl 
123abc 
+1

धन्यवाद .... मैं दूसरे चर में समान वैरिएबल घोषित करने के लिए चूक गया। प्रारंभ में, जब इसे घोषित नहीं किया गया था, तो यह कहता है, वैरिएबल "@ ए" आयात नहीं किया जाता है ..... यह अब काम कर रहा है ... – Cthar

2

नहीं कर सकते आप पैकेज का उपयोग और चर निर्यात?

+1

धन्यवाद .... इस समस्या के बाद .... मैं उपयोग की तलाश कर रहा हूं पैकेज का फिर भी धन्यवाद। – Cthar

29

सामान्य रूप से, जब आप एकाधिक फाइलों के साथ काम कर रहे होते हैं, और उनके बीच चर या सबराउटिन आयात करते हैं, तो आप पाएंगे कि आपकी परियोजना बढ़ने के साथ फाइलों को थोड़ा जटिल होने की आवश्यकता होती है। यह सब कुछ एक सामान्य नेमस्पेस साझा करने के कारण है, लेकिन कुछ फ़ाइलों में घोषित कुछ चर के साथ लेकिन दूसरों को नहीं।

पर्ल में हल किया जाने वाला सामान्य तरीका मॉड्यूल बनाना है, और फिर उन मॉड्यूल से आयात करना है। इस मामले में:

#!/usr/bin/perl 

package My::Module; # saved as My/Module.pm 
use strict; 
use warnings; 

use Exporter; 
our @ISA = 'Exporter'; 
our @EXPORT = qw(@a @b); 

our (@a, @b); 

@a = 1..3; 
@b = "a".."c"; 

और फिर मॉड्यूल का उपयोग करने के लिए:

#!/usr/bin/perl 

use strict; 
use warnings; 

use My::Module; # imports/declares the two variables 

print @a; 
print @b; 

use कि लाइन वास्तव में मतलब है:

BEGIN { 
    require "My/Module.pm"; 
    My::Module->import(); 
} 

import विधि Exporter से आता है। जब इसे कॉल किया जाता है, तो यह कॉलिंग कोड में @EXPORT सरणी में चर निर्यात करेगा।

Exporter और perlmod के लिए प्रलेखन को देखते हुए आपको एक प्रारंभिक बिंदु देना चाहिए।

संबंधित मुद्दे