Автор Тема: Вопрос по условному оператору "?:"  (Прочитано 10691 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« : 16 Сентября 2006, 11:42:09 »
Вопрос может и тупой, но не понятно
КОД:
@ARGV[0] eq "-w" ?  $wait=@ARGV[1] : $wait=3;
print "Perem=$wait\\n";

Выполняю
script.pl -w 10
Результат
Perem=3;

А если например
@ARGV[0] eq "-w" ?  $wait=@ARGV[1] : print "Not used -w";

Выполняю
script.pl -w 10
Результат
Perem=10;

Также если использовать if
if (@ARGV[0] eq "-w"){
    $wait=@ARGV[1];
}else{
    $wait=3;
}

Выполняю
script.pl -w 10
Результат
Perem=10;

В чем глюк конструкции @ARGV[0] eq "-w" ?  $wait=@ARGV[1] : $wait=3;
????????

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #1 : 16 Сентября 2006, 13:10:32 »
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;

print "Perem=$wait\\n";


попробуй так
« Последнее редактирование: 16 Сентября 2006, 13:22:31 от frenky »
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #2 : 16 Сентября 2006, 13:20:42 »
тогда бы иф не работал бы
if (@ARGV[0] eq "-w"){
$wait=@ARGV[1];
}else{
$wait=3;
}

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #3 : 16 Сентября 2006, 13:22:49 »
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;

print "Perem=$wait\\n";


попробуй так
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #4 : 16 Сентября 2006, 13:23:59 »
кстати,етот оператор называеться ТРИНАРНЫЙ :О)
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #5 : 16 Сентября 2006, 13:31:50 »
#! /usr/bin/perl

$paramcount=@ARGV;
print "Params: $paramcount      @ARGV\\n";

@ARGV[0] eq "-w" ?  $wait=@ARGV[1] : $wait=3;
print "Perem=$wait\\n\\n";

@ARGV[0] eq "-w" ? $wait2=@ARGV[1] : print "Not used -w\\n";
print "Perem2=$wait2\\n\\n";

if (@ARGV[0] eq "-w"){
    $wait3=@ARGV[1];
}else{
    $wait3=3;
}
print "Perem3=$wait3\\n\\n";


#########END OF SCRIPT#######

Результаты

./argv.pl
-1
Perem=3

Not used -w
Perem2=

Perem3=3

Результат 2

./argv.pl -w 10
1       -w 10
Perem=3

Perem2=10

Perem3=10

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #6 : 16 Сентября 2006, 13:33:52 »
./argv2.pl -w 10
Perem=-w

гы гы сам у себя тестил?

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #7 : 16 Сентября 2006, 13:33:59 »
ты форум читаешь? я тебе уже написал что нужно сделать!
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #8 : 16 Сентября 2006, 13:37:14 »
то что ты написал у тебя что выдает?

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #9 : 16 Сентября 2006, 14:04:02 »
Parsing Traps
Parsing ``if it looks like a function, it is a function\'\' rule.

  print
    ($foo == 1) ? "is one\\n" : "is zero\\n";


    # perl4 prints: is zero
    # perl5 warns: "Useless use of a constant in void context" if using -w
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #10 : 16 Сентября 2006, 14:06:50 »
ВОт оно :О)

#!/usr/bin/perl -w

$wait=$ARGV[0];

sub ss
{
my $arg=shift;
$wait=$arg;
#return ($arg);
}

($wait eq \'-w\') ? ss($ARGV[1]) : ss(3);

print "Perem=$wait\\n";

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
C:\\>perl 111.pl -w 66
Perem=66

C:\\>perl 111.pl -w d
Perem=d

C:\\>perl 111.pl -w 553
Perem=553

C:\\>perl 111.pl -d 553
Perem=3

C:\\>perl 111.pl -d 553
Perem=3

C:\\>perl 111.pl -w 1111
Perem=1111
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #11 : 16 Сентября 2006, 14:08:18 »
ну у меня перл 5
по существу, в чем трабл конструкции может быть то?

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #12 : 16 Сентября 2006, 14:11:13 »
напиши
#!/usr/bin/perl -w

и увидишь в чем трабла
____________________
[on-line football manager] fdm.kiev.ua

Оффлайн hoochie

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вопрос по условному оператору "?:"
« Ответ #13 : 16 Сентября 2006, 14:16:51 »
Нет, чего то ли я не догоняю
такая конструкция работает(твоя) но это с примерение саба
($wait eq \'-w\') ? ss($ARGV[1]) : ss(3);

а по существу то и такая должна работать?
@ARGV[0] eq "-w" ? $wait=@ARGV[1] : $wait=3;

просто у тебя саб выполняет операции присваивания

Оффлайн frenky

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://fdm.kiev.ua
Вопрос по условному оператору "?:"
« Ответ #14 : 16 Сентября 2006, 14:24:56 »
замени своб первую строку в скрипте на
 #!/usr/bin/perl -w

,в конце стоит параметр -w (warnings)

потом запусти скрипт и все увидишь
____________________
[on-line football manager] fdm.kiev.ua

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28