كيف يمكنني جعل الأنابيب المتشعبة تعمل في Perl على نظام Windows؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

أحاول نقل برنامج Perl النصي من Unix إلى Windows ولكن أواجه وقتًا شبه مستحيل لتشغيله بسبب الأنابيب المتفرعة غير المدعومة في الوظيفة المفتوحة.إليك الكود:

sub p4_get_file_content {
    my $filespec = shift;
    return 'Content placeholder!' if ($options{'dry-run'});
    debug("p4_get_file_content: $filespec\n");
    local *P4_OUTPUT;
    local $/ = undef;
    my $pid = open(P4_OUTPUT, "-|");
    die "Fork failed: $!" unless defined $pid;
    if ($pid == 0) { # child
        my $p4 = p4_init();
        my $result = undef;
        $result = $p4->Run('print', $filespec);
        die $p4->Errors() if $p4->ErrorCount();
        if (ref $result eq 'ARRAY') {
            for (my $i = 1; $i < @$result; $i++) {
                print $result->[$i];
            }
        }
        $p4->Disconnect();
        exit 0;
    }
    my $content = <P4_OUTPUT>;
    close(P4_OUTPUT) or die "Close failed: ($?) $!";
    return $content;
}

الخطأ هو:

'-' is not recognized as an internal or external command,
operable program or batch file.

لا أحد يعرف كيفية جعل هذا العمل؟شكرًا!

مايك

هل كانت مفيدة؟

المحلول

أعلم أنها ليست إجابة مباشرة على سؤالك، ولكن يبدو أنك تكتب شيئًا فوق Perforce في Perl؟إذا كان الأمر كذلك، فقد تجد مكتبة موجودة تفعل ما تريده بالفعل وتوفر على نفسك الكثير من المتاعب، أو على الأقل تقدم لك بعض نماذج التعليمات البرمجية للعمل منها.

على سبيل المثال:

يحرر:الآن بعد أن عرفت ما تفعله، أعتقد أنك تحاول نقل p42svn إلى Windows، أو بالأحرى جعله متوافقًا مع Windows على الأقل.يرى هذا الموضوع لمناقشة هذه القضية بالتحديد.التوصية (التي لم يتم اختبارها) هي تجربة نماذج التعليمات البرمجية المدرجة في http://perldoc.perl.org/perlfork.html تحت "شوكة الأنابيب مفتوحة () لم يتم تنفيذها بعد"لإنشاء الأنبوب بشكل صريح بدلاً من ذلك.

نصائح أخرى

وانها ليست الذهاب الى العمل كما هو. سوف تحتاج إلى إيجاد طريقة أخرى لإنجاز ما تقوم به. أنها لا تبدو هناك أن حرق حاجة إلى الأنبوب مفترق الطرق، ولكن من الصعب أن أقول منذ أن كنت لا تعرف ما هو P4 والكثير من التعليمات البرمجية يتم فقدان لتفسير زاوية قوس.

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