Forum Webscript.Ru
Программирование => Perl => Тема начата: 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;
????????
-
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;
print "Perem=$wait\\n";
попробуй так
-
тогда бы иф не работал бы
if (@ARGV[0] eq "-w"){
$wait=@ARGV[1];
}else{
$wait=3;
}
-
$wait=@ARGV[0];
$wait eq "-w" ? @ARGV[1] : 3;
print "Perem=$wait\\n";
попробуй так
-
кстати,етот оператор называеться ТРИНАРНЫЙ :О)
-
#! /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
-
./argv2.pl -w 10
Perem=-w
гы гы сам у себя тестил?
-
ты форум читаешь? я тебе уже написал что нужно сделать!
-
то что ты написал у тебя что выдает?
-
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
-
ВОт оно :О)
#!/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
-
ну у меня перл 5
по существу, в чем трабл конструкции может быть то?
-
напиши
#!/usr/bin/perl -w
и увидишь в чем трабла
-
Нет, чего то ли я не догоняю
такая конструкция работает(твоя) но это с примерение саба
($wait eq \'-w\') ? ss($ARGV[1]) : ss(3);
а по существу то и такая должна работать?
@ARGV[0] eq "-w" ? $wait=@ARGV[1] : $wait=3;
просто у тебя саб выполняет операции присваивания
-
замени своб первую строку в скрипте на
#!/usr/bin/perl -w
,в конце стоит параметр -w (warnings)
потом запусти скрипт и все увидишь
-
#! /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
Это оно? больше не выдает ничего
-
@ARGV[0] eq "-w" ? $wait=@ARGV[1] :{ $wait=3};
а вот так нормально работает..... ПОЧЕМУ?
-
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;
-
Вот так понятно, спасибо
-
Сорри, всё не читал..
Вот так никто не пробовал:
$-----------------------------1332282325870
Content-Disposition: form-data; name="s"