Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Несколько вопрсов по PERL

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я работаю в linux(SlackWare)
 
1.как можно узнать имя пользователя запустившего скрипт  НЕ через env  ( $ENV{'USER'}  )  
 
2..Как сделать чтобы фукция sytem() не выводила результат на экран при присвоеные переменной. например $var=system("uptime");
 

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 12:20 10-11-2003
redp

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1) ну наверно с помощью обычных UNIX ф-ций (я думаю в Perl под UNIX есть к ним связка) типа getuid или geteuid - берешь UID процесса, а дальше getpwnam или getpwent - точно не помню
2) дык запускай вот примерно так:

Код:
 
$var=`uptime > /dev/null`;
 

Всего записей: 514 | Зарегистр. 16-06-2003 | Отправлено: 15:01 10-11-2003
webdeveloper



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
redp

thanks

Всего записей: 1373 | Зарегистр. 30-05-2002 | Отправлено: 18:16 11-11-2003
ghostwheel

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На 1)
 
Если память не изменяет, то:
 
$user = `whoami`;

Всего записей: 7 | Зарегистр. 06-11-2003 | Отправлено: 08:44 12-11-2003
Tropin



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
предсавьте в процессе выполнения программы я получаю переменную $x.как можно узнать я вляется ли это простым скаляром или это ссылка на массив или хэш?

Всего записей: 538 | Зарегистр. 25-11-2002 | Отправлено: 14:36 29-01-2004
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
%hash=(1=>1, 2=>2);
$ref = \%hash;
# $ref=111; #uncomment
print %hash;
print $ref;
if(%{$ref}){
 print "!!!";
}
 
Оно?

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 15:42 29-01-2004
drobitko

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Выдержка из документации по перлу:
 

Цитата:
 
ref EXPR
 
ref
 
Returns a non-empty string if EXPR is a reference, the empty string otherwise. If EXPR is not specified, $_ will be used. The value returned depends on the type of thing the reference is a reference to. Builtin types include:  
    SCALAR
    ARRAY
    HASH
    CODE
    REF
    GLOB
    LVALUEIf the referenced object has been blessed into a package, then that package name is returned instead. You can think of ref as a typeof operator.
 
    if (ref($r) eq "HASH") {
        print "r is a reference to a hash.\n";
    }
    unless (ref($r)) {
        print "r is not a reference at all.\n";
    }
    if (UNIVERSAL::isa($r, "HASH")) {  # for subclassing
        print "r is a reference to something that isa hash.\n";
    }See also the perlref manpage.
 
 


Всего записей: 83 | Зарегистр. 10-02-2003 | Отправлено: 15:51 29-01-2004
xcm

Графоман
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть код скомпил-й в exe.
open LF, ">>log.log" or die "error opening log for appending: $!\n";
print LF scalar localtime() . "\n";
close LF;
 
при запуске через планировщик (at 10:00 prog.exe) ничего не происходит. Почему?

----------
на свете счастья нет, но есть попкорн и сникерс.

Всего записей: 652 | Зарегистр. 01-11-2002 | Отправлено: 15:41 01-08-2006 | Исправлено: xcm, 15:42 01-08-2006
PufyaIra

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

народ, хелпайте нубу  
строчка в батнике вида  
perl badsetl.pl < %1 > %2  
.... ну perl запускает перл, потом идет указание скрипта...а чего за переменные, почему одна в скобках <> ??? в каких только вариация не пробовал после батника подставлять, все мимо...что нужно указать вместо %1 и 2% (в самом скрипте никаких присваиваний нету)?

Всего записей: 3 | Зарегистр. 08-06-2006 | Отправлено: 07:29 12-02-2008
shilder

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PufyaIra
И правда.... проблема целая =)
 
%1 - первый аргумент бат-файлу
%2 - второй аргумент бат-файлу
 
< - перенаправление потока ввода (в скрипте это STDIN)
> - перенаправление потока вывода (STDOUT)
 
т.е. данный скрипт у тебя должен вызываться как
 
file.bat [входной файл] [выходной файл]

Всего записей: 20 | Зарегистр. 17-08-2003 | Отправлено: 09:50 12-02-2008 | Исправлено: shilder, 09:51 12-02-2008
Portfel



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
shilder
Спасибо Огромное, с примером, достойным "описанием", ГРАМОТНО. )))
И что самое главное РАБОТАЕТ ))).
З.Ы.
Акк PufyaIra моей девушки..из дома забыл прочекить, что под ним пишу.
 
А вот и сам скрипт, дабы было
 
    while (<STDIN>)
 
{
#    chomp($_);
   
   if (/^05/ or /^07/)  
  {  
     if (substr($_,88,3) == 643)
      {  
        if (substr($_,73,3) != substr($_,88,3))
         
        {  print $_ }  
                      }
  }
 
все просто, ясно, но нефига не понятно ))).

----------

В чем сила Брат?
----------

Всего записей: 941 | Зарегистр. 16-09-2004 | Отправлено: 11:06 12-02-2008 | Исправлено: Portfel, 11:09 12-02-2008
pka

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
все просто, ясно, но нефига не понятно

Вначале скрипт берет строку из стандартного ввода и сует в переменную $_ (так по умолчанию). Строка # chomp($_); - это комментарий, но если убрать # из начала строки, то эта команда будеть обрезать символы переноса строки, если они есть, в конце строкового значения, хранящегося в $_ (часто очень полезная штука). Потом первый if проверяет, начинается ли значение, хранящееся в $_ на 05 или 07. Если нет, то строка отправляется "в сад", а если да, то начинает работать второй if. Он проверяет, совпадают ли 3 символа, находящиеся по смещению 88 в значении переменной $_ со значением 643. Если нет - строка идет "в сад", если да, то начинает работать третий if. Он проверяет, отличаются ли 3 символа по смещению 73 от 3-х символов по смещению 88 в переменной $_. Если отличаются, то строка печатается в стандартный поток вывода.
Поначалы непонятности бывают оттого, что в реальном коде операции с $_ пишутся упрощенно. Т.е. строку
Цитата:
if (/^05/ or /^07/)
можно записать if ($_ =~ m/^05/ or $_ =~ m/^07/), но так длиннее

Всего записей: 83 | Зарегистр. 16-03-2006 | Отправлено: 21:08 17-02-2008
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Несколько вопрсов по PERL


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru