Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 05:33 27.04.24 
Клубове/ Компютри и Интернет / Perl Пълен преглед*
Информация за клуба
Тема Re: subroutine help [re: ton4]
Автор supremacy (phantom)
Публикувано03.06.07 17:01  



ако не те мързи погледни
perlfunc - `perldoc perlfunc` или `man perlfunc` или http://perldoc.perl.org/search.html?q=perlfunc
както и perldoc -f return

относно резултата 1-ца, който имаш: функцията (subroutine in the Perl world) ти връща това, което връща фунцията print, което от своя страна е 1-ца.
тествай през терминала следното:

>perl -e 'print print'

кофти навик е да не връщаш експлицитно от функция. или ако е имплицитно, то поне имай конкретен стил, примерно ако последния ред е без край (;) - ще значи, че се има предвид return на var, expression, но не и на print или какъвто и да е объркващ statement, както е и в твоя случай.
в твоя вариант няма нужда от изход към STDOUT, т.е. print в самата функция. IMHO следва да е нещо от сорта на:


sub _mytime {
my (@args) = @_;
# your logic here ...
return $time # or whatever is wanted
}


колкото до раздробяването на 3 отделни функции - защо не една, но с условно разклонение, което ще води до изчисляване на различни стоиности?



#!/usr/bin/perl

use strict;
use warnings;
use Fatal qw(open close);
use Time::localtime;

open my $fh, '>', '/tmp/_some_test_file.txt';

# use pack to align the result
print $fh pack('A10', "seconds:"), _mytime({second=>'true'}),$/;
print $fh pack('A10', "minutes:"), _mytime({minute=>'true'}),$/;
print $fh pack('A10', "hours:"), _mytime({hour=>'true'}),$/;

=pod=
or just:
print $fh
_mytime({hour=>'true'}),' ',
_mytime({minute=>'true'}), ' ',
_mytime({second=>'true'});
=cut=

close $fh;

sub _mytime {
my $type = shift; # hash ref with time type
my @args = @_; # the rest arguments
my $timetype = q{}; # the end result

# case when-else emulation
if ($type->{'second'}) { $timetype = localtime->sec() }
elsif ($type->{'minute'}) { $timetype = localtime->min() }
elsif ($type->{'hour'}) { $timetype = localtime->hour() }

$timetype
}



ако и това не ти помага - http://perldoc.perl.org или просто perldoc perl



Цялата тема
ТемаАвторПубликувано
* subroutine help ton4   02.06.07 23:44
. * Re: subroutine help supremacy   03.06.07 17:01
. * utochnenie usb2   21.05.08 17:05
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.