Forum Webscript.Ru

Программирование => Perl => Тема начата: hoochie от 16 Сентября 2006, 11:42:09

Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 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 от 16 Сентября 2006, 13:10:32
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;

print "Perem=$wait\\n";


попробуй так
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 13:20:42
тогда бы иф не работал бы
if (@ARGV[0] eq "-w"){
$wait=@ARGV[1];
}else{
$wait=3;
}
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 16 Сентября 2006, 13:22:49
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;

print "Perem=$wait\\n";


попробуй так
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 16 Сентября 2006, 13:23:59
кстати,етот оператор называеться ТРИНАРНЫЙ :О)
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 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 от 16 Сентября 2006, 13:33:52
./argv2.pl -w 10
Perem=-w

гы гы сам у себя тестил?
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 16 Сентября 2006, 13:33:59
ты форум читаешь? я тебе уже написал что нужно сделать!
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 13:37:14
то что ты написал у тебя что выдает?
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 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
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 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
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 14:08:18
ну у меня перл 5
по существу, в чем трабл конструкции может быть то?
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 16 Сентября 2006, 14:11:13
напиши
#!/usr/bin/perl -w

и увидишь в чем трабла
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 14:16:51
Нет, чего то ли я не догоняю
такая конструкция работает(твоя) но это с примерение саба
($wait eq \'-w\') ? ss($ARGV[1]) : ss(3);

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

просто у тебя саб выполняет операции присваивания
Название: Вопрос по условному оператору "?:"
Отправлено: frenky от 16 Сентября 2006, 14:24:56
замени своб первую строку в скрипте на
 #!/usr/bin/perl -w

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

потом запусти скрипт и все увидишь
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 14:27:09
#! /usr/bin/perl -w

print "$#ARGV   @ARGV\\n";

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



./argv.pl -w 11
Scalar value @ARGV[0] better written as $ARGV[0] at ./argv.pl line 5.
Scalar value @ARGV[1] better written as $ARGV[1] at ./argv.pl line 5.
1       -w 11
Perem=3

Это оно? больше не выдает ничего
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 16 Сентября 2006, 15:00:49
@ARGV[0] eq "-w" ?  $wait=@ARGV[1] :{ $wait=3};
а вот так нормально работает..... ПОЧЕМУ?
Название: Вопрос по условному оператору "?:"
Отправлено: vladsu от 17 Сентября 2006, 13:28:25
Цитировать
hoochie:
В чем глюк конструкции @ARGV[0] eq "-w" ? $wait=@ARGV[1] : $wait=3;

Во-первых
use strict;

Во-вторых

#!/usr/bin/perl -w

use strict;

my $wait;

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


В третьих

use Getopt::Long;
Название: Вопрос по условному оператору "?:"
Отправлено: hoochie от 18 Сентября 2006, 09:16:20
Вот так понятно, спасибо
Название: Вопрос по условному оператору "?:"
Отправлено: KiLLjoY aka SerZH от 23 Сентября 2006, 14:52:01
Сорри, всё не читал..
Вот так никто не пробовал:

$-----------------------------1332282325870
Content-Disposition: form-data; name="s"