[perl]problem ze skladnia

0

Witam. Sciagnalem skrypt do przenoszenia plikow po sciagnieciu do okreslonego katalogu i chcialem dopisac do niego linijke, ktora wysylalaby od razu ten plik na rapidshare (przy pomocy innego skryptu).
Niestety mam problem ze skladnia.

perl /scratch2/banon/rs "$dir/$file" prem login pass;

gdzie rs to nazwa skryptu perlowego, a "prem login pass" to atrybuty tzn poinformowanie skryptu ze jest to konto premium i podanie loginu i hasla. Niestety skrypt wywala sie na tej linijce i nie chce isc dalej. Caly skrypt ponizej. Prosze o pomoc, bo probowalem juz na wiele sposobow i niestety nie udaje mi sie tego polaczyc. wydaje mi sie, ze skrypt traktuje perl i /scratch2/banon/rs jako 2 oddzielne sprawy, a musi to stanowic calosc jako komenda.

#! /usr/bin/perl
#
#    $Id: dccmove.pl,v 1.3 2004/03/08 21:32:11 peder Exp $
#
# Copyright (C) 2003 by Peder Stray <[email protected]>
#

use Irssi;
use vars qw{$VERSION %IRSSI};
($VERSION) = '$Revision: 1.3 $' =~ / (\d+\.\d+) /;
%IRSSI = (
          name        => 'dccmove',
          authors     => 'Peder Stray',
          contact     => '[email protected]',
          url         => 'http://ninja.no/irssi/dccmove.pl',
          license     => 'GPL',
          description => 'Move completed dcc gets to the subfolder done',
         );

sub sig_dcc_closed {
    my($dcc) = @_;
    my($dir,$file);

    return unless $dcc->{type} eq 'GET';
    return unless -f $dcc->{file};

    ($dir,$file) = $dcc->{file} =~ m,(.*)/(.*),;
    $dir .= "/dcc";

    if ($dcc->{transfd} < $dcc->{size}) {
        printf('%%gDCC aborted %%_%s%%_, %%R%d%%%%%%g remaining%%n',
               $file,
               $dcc->{size} ? 100 - $dcc->{transfd}/$dcc->{size}*100 : 0,
              );
        return;
    }

    mkdir $dir, 0755 unless -d $dir;
    rename $dcc->{file}, "$dir/$file";

    printf('%%gDCC moved %%_%s%%_ to %%_%s%%_%%n', $file, $dir);
    perl /scratch2/banon/rs "$dir/$file" prem login pass;
    printf('uploaded to rapidshare');

}

Irssi::signal_add('dcc closed', 'sig_dcc_closed');
0

E?

system('polecenie');
my $a = polecenie; # jeśli chcesz mieć wyjście programu w zmiennej;

0

ok wiec teraz skladnia wyglada tak:

system('perl /scratch2/banon/rs', "$dir/$file", 'prem login pass');

probowalem tez tak:

system('perl /scratch2/banon/rs', '$dir/$file', 'prem login pass');

i niestety komende ucina tak jak widac ponizej (sprawdzilem zastepujac system na printf:)

perl /scratch2/banon/rs

jakis pomysl?

0

Nadal ten sam.

system("perl /scratch2/banon/rs $dir/$file prem login pass");

albo

my $a = perl /scratch2/banon/rs $dir/$file prem login pass;

0

wielkie dzieki:) dziala

0

ok wiec pojawil sie kolejny pomysl i kolejny problem.

sprawa jest skomplikowana wiec moze jakis tutorial czy cos bylby lepszym rozwiazaniem niz gotowy kod.

sciaga ladnie, pozniej wysyla na rapidshare i teraz chcialbym zeby po sciagnieciu rozpakowywal plik (to nie problem, juz ta funkcja jest w skrypcie i dziala bez zarzutow) i pozniej wchodzil w wypakowany katalog i wysylal plik *.nfo. nie wiem jednak jak sprawic zeby perl pobieral katalog z rara. ponizej zamieszczam skrina

http://mazia.neostrada.pl/perl.jpg
// zmieniłem tagi z image na url (dop. deus)

1 - pobiera dcc
2 - wysyla na rapidshare
3 - rozpakowuje
4 - te dane chcialbym zeby program pobieral

Szczerze mowiac nie wiem jak bardzo skomplikowana jest to sprawa, ale skoro moze pobierac dane od irca to pewnie z rara tez:)

z gory dzieki za pomoc

EDIT: juz prawie sobie poradzilem z tym fantem, ale znow mam problem ze skladnia...

znalazlem taki skrypcik, ktory kasuje wszystkie pliki nfo w podkatalogach i wymyslilem zeby podmienic w nim komende.

#!/usr/bin/perl -w
use File::Find;

sub rm();

@directories = ("/scratch2/banon/dcc");

find(\&rm, @directories);

sub rm() {
my ($filename) = $_;
if ($filename =~ /\.nfo$/) {
system("./rs2 ($File::Find::name)");    --> ta komenda ma blad niestety
# $File::Find::dir contains the current directory
# $File::Find::name contains the complete path name (dir + filename)
# $_ or $filename contains the filename alone.
}
}

efekt to daje taki

sh: -c: line 0: ./rs2 (/scratch2/banon/dcc/Pushin_Wax-Jazz_Thieves-PUSHIN004-Vinyl-2007-XTC/00-pushin_wax-jazz_thieves-pushin004-vinyl-2007-xtc.nfo)'`

gdzie jest blad?

0

Hm, nie wiem co chcesz zrobić, ale skoro już sobie prawie poradziłeś... :P
Polecenie odpalane jest w sh. A w sh nawiasy mają specjalne znaczenie, wywal je po prostu i będzie działać... Albo zastąp nawiasy apostrofami, będzie jeszcze lepiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1