2010-01-16 20 views
6

मैं सिग्विन के तहत पर्ल स्क्रिप्ट चला रहा हूं जो <STDIN> से इनपुट लेता है और लगातार अनुरोधों को संसाधित करता है।मैं साइगविन के तहत एक पर्ल स्क्रिप्ट में तीर कुंजी कैसे संभाल सकता हूं?

#!/usr/bin/perl 
print "Enter Input:"; 
while(<STDIN>) { 
    print "Recieved Input: $_"; 
    print "Enter Input:"; 
} 



    $perl testPerl.pl   
    Enter input:input1 
    Recieved input:input1 
    Enter input:inpt2 
    Recieved input:input2 
    Enter input: 

अब, मैं वर्तमान प्रॉम्प्ट पर ऊपर तीर चाहते हैं: "इनपुट दर्ज करें:" लेने के लिए पिछले आदानों ie "इनपुट 2", "इनपुट 1 की"

यह अपेक्षा के तहत चल बर्ताव करता है खिड़कियों enivronment (cmd.exe)
लेकिन cygwin के तहत समस्या यह है कि ऊपर तीर सचमुच कर्सर 1 पंक्ति तक ले जाता है यानी यह लाइन के लिए ले जाता है "प्राप्त इनपुट: इनपुट 2" इस पर अपने विचार साझा करें

+1

कोड है कि आप कीस्ट्रोक्स कार्रवाई करने के लिए प्रयोग कर रहे हैं साझा करें:

इस अवधि :: ReadLine उपयोग करने के लिए अपने कार्यक्रम का एक सीधा अनुवाद किया जाएगा। साथ ही, आप अपनी पोस्ट को फिर से लिखना चाहेंगे ताकि इसमें एक स्पष्ट प्रश्न हो। टिप्पणी के लिए – Ether

+0

धन्यवाद ईथर। मैंने कोड स्निपेट संलग्न किया है और सवाल को और स्पष्ट करने के लिए फिर से लिखा है। मैं कीस्ट्रोक को संसाधित करने के लिए किसी भी विशेष दिनचर्या का उपयोग नहीं कर रहा हूं, यह सिर्फ मानक इनपुट पर कब्जा कर रहा है। अगर किसी भी जानकारी की आवश्यकता है तो कृपया मुझे बताएं। –

+0

यह एक टर्मिनल कॉन्फ़िगरेशन समस्या है, मुझे लगता है। मैंने हमेशा टर्मिनलों से नफरत की है जो सिगविन प्रदान करता है। –

उत्तर

4

टर्म :: रीडलाइन मॉड्यूल देखें। यह आपके कार्यक्रम के लिए इनपुट लेगा, और इतिहास को संभालेगा, जो मुझे लगता है कि आप किस बारे में बात कर रहे हैं।

 
use Term::ReadLine; 
my $term = new Term::ReadLine 'Simple Perl calc'; 
my $prompt = "Enter Input: "; 
while (defined ($_ = $term->readline($prompt))) { 
    print "Recieved Input:$_\n"; 
    $term->addhistory($_) if /\S/; 
} 

1

विंडोज कंसोल और यूनिक्स टर्मिनलों के बीच कमांड लाइन इतिहास के संचालन में एक बड़ा अंतर है। विंडोज़ पर, यह कंसोल द्वारा किया जाता है, जबकि यूनिक्स पर, एप्लिकेशन इसके लिए ज़िम्मेदार होते हैं। मुझे पर्ल के बारे में कुछ भी पता नहीं है, लेकिन आपको रीडलाइन लाइब्रेरी की तरह कुछ उपयोग करने की आवश्यकता होगी। यह सहायक लगता है: http://perldoc.perl.org/functions/readline.html

+0

रीडलाइन लाइब्रेरी और उसी नाम के पर्ल फ़ंक्शन अलग-अलग जानवर हैं। –

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

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