Автор Тема: В чем может быть глюк  (Прочитано 3444 раз)

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

Оффлайн Energizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kondrmed.ru
В чем может быть глюк
« : 11 Апреля 2003, 10:39:44 »
написал программку, которая позволяла бы формировать и показывать список из файла, исходя из третьего порядка в строке, т.е.

список в файле:

порядок1|порядок2|18|
порядок1|порядок2|10|
порядок1|порядок2|7|
порядок1|порядок2|0|

программка должна его показывать как

порядок1|порядок2|0|
порядок1|порядок2|7|
порядок1|порядок2|10|
порядок1|порядок2|18|

он она не хочет, ругается, в чем может быть глюк ...

запускается путем - >
filename?name=имя создаваемого файла

сама программа:

#! /usr/bin/perl -w
use CGI qw( param );
use CGI::Carp qw( fatalsToBrowser );

my $filename="sort.cgi";

if(param(\'name\')) {
&create
} else {
&sortlist;
}
## создаем файл
sub create
{
my $sfile=param(\'name\');
$sfile="$sfile.dat";
# если нет такого файла создадим
unless (-e $sfile)
{
open(FILE1,">$sfile") || die("Can\'t create $sfile",$!);
print FILE1 qq~name1|name2|1|\\nname1|name2|5|\\nname1|name2|4|\\n~;
close(FILE1);
chmod(0660,$sfile);
}
print "Content-type: text/html\\n\\n";
print "Список создан";
}

### сортируем его
sub sortlist
{
my $file=param(\'file\');
#Open Rubric
open (FILE, "<$file") or die("Can\'t open $file-file ",$!);
my @lines=;
close(FILE);
print "Content-type: text/html\\n\\n";
print "Сортируем список
    ";

    #Здесь формируем список

    foreach(@lines)
    {
    my($hesh1{$name},$hesh2{$name},$name)=split(/\\|/, $_);
    }
    #sort
    foreach (sort keys %hesh1)
    {
    print "$hesh1{$_}|$hesh2{$_}
    \\n";
    }
    print "
";
}

заранее спасибо

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
В чем может быть глюк
« Ответ #1 : 11 Апреля 2003, 13:37:21 »
if(param(\'name\')) {
&create
}
The documentations is your friend

Оффлайн Energizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kondrmed.ru
В чем может быть глюк
« Ответ #2 : 11 Апреля 2003, 14:46:02 »
А если написать так то все работает....

#! /usr/bin/perl -w
use CGI qw( param );
use CGI::Carp qw( fatalsToBrowser );   

my $filename="bout.plx";

if(param(\'name\')) {
   &create
} else {
   &sortlist;
}
## создаем файл
sub create
{
   my $sfile=param(\'name\');
        $sfile="$sfile.dat";   
   # если нет такого файла создадим
   unless (-e $sfile)
     {    
      open(FILE1,">$sfile") || die("Can\'t create $sfile",$!);
         print FILE1 qq~name1|name2|name3|1\\nname1|name2|name3|5\\nname1|name2|name3|4\\n~;
         close(FILE1);
       chmod(0660,$sfile);
     }  
   print "Content-type: text/html\\n\\n";
   print "Список создан";
}
### сортируем его
sub sortlist
{
   my $file=param(\'file\');
   #Open Rubric
   open (FILE, "<$file") or die("Can\'t open $file-file ",$!);
     my @lines=;
      close(FILE);
   print "Content-type: text/html\\n\\n";
   print "Сортируем список
    ";
       my $i=0;
       foreach (@lines)
                  {
          $i++;
          my($name1,$name2,$name3,$name4)=split(/\\|/, $_);
          print "
  • $name1|$name2|$name3|$name4";
        }
       print "
";
}


только сортировка не происходит :(
   

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
В чем может быть глюк
« Ответ #3 : 11 Апреля 2003, 16:21:16 »
Поставь перед foreach (@lines):

@lines=sort{(split /\\|/,$a)[3] <=> (split /\\|/,$b)[3]}@lines;

Оффлайн Energizer

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 23
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kondrmed.ru
В чем может быть глюк
« Ответ #4 : 15 Апреля 2003, 09:25:29 »
Даже не знаю как тебя отблагодарить  Phoinix, все в одной строке... элементарно... все заработало.. СПАСИБО!

Ты настоящий друг и программер :)

 

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