2013-02-24 5 views
-1

мне нужно проверить профиль файл существует, так что я написал это для целей тестированияЧто случилось с этим

#!/usr/bin/perl 
use strict; 
use warnings; 

my $prfle=`~/sqllib/db2profile`; 
print $prfle; 

Но его печать ничего ...

скрипт проверяет для файла профиля и если он не найден, он будет запрашивать у пользователя до тех пор, пока не будет указан допустимый путь, и выполнит этот файл профиля, я успешно выполнил это в сценарии оболочки, но столкнулся с проблемой в perl

+1

Похоже, вы просто попросили об этом в http://stackoverflow.com/questions/15053760/how-do-i-port-a-shell-script-to-perl – octopusgrabbus

+0

-1 для ужасного заголовка вопроса. –

ответ

2

на основе ваших комментариев, я подозреваю, что вы хотите что-то вроде этого:

my $profile = '';      # default profile 
while (not -e $profile) {    # until we find an existing file 
    print "Enter a valid profile: "; 
    chomp($profile = <>);    # read a new profile 
} 
qx($profile);       # execute this file 

Есть более чем один вариант исполнения файла. qx() - это то же самое, что и backticks, и вернет стандартный выход. system() вернет возвращаемое значение, заданное системой для выполненной команды. exec() выполнит команду и завершит ваш скрипт perl, фактически игнорируя любой код, следующий за exec. На основе ваших потребностей выберите вариант, который вам подходит.

+0

Привет, Вы пишете, но единственное, что мне нужно, - это, как правило, файл профиля в ** home-directory/sqllib/bin ** в порядке ** ~/sqllib/bin **, поэтому, если он не найден тогда мы запрашиваем действительный профиль – mviswa

+0

Затем вы вводите это, где указано «профиль по умолчанию». – TLP

+0

Вы не получаете меня, вот что я говорю ** my $ profile = '~/sqllib/db2profile'; ** дает мне ** ~/sqllib/db2profile ** вместо **/home-dir/sqllib/db2profile ** – mviswa

4

В Perl обратные шаги выполняют команду оболочки. Например, эта печать будет привет:

`echo hi`; 

Чтобы проверить, существует ли файл, используйте -e:

$prfle= '~/sqllib/db2profile'; 
if (-e $prfle) { 
    print "File Exists!\n"; 
} 

Обратите внимание на одинарные кавычки ' вместо обратные кавычки ` вокруг строкового литерала.

+0

'prfile = ~/sqllib/db2profile profile() { if [-f $ prfile] && [" $ prfile "! =" "]; затем . $ Prfile еще чтения -p «Введите действительный профиля:» prfile профиль фи } профиль '** Как я могу это сделать в Perl ** – mviswa

+0

Похоже @TLP предоставил версию Perl вашего Баш скрипт :) – Andomar

Смежные вопросы