Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6749[/thread]

x-werte in x-dateien schreiben



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Rambo
 2005-03-01 13:07
#52202 #52202
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hallo,

ich habe folgenden code
Code: (dl )
1
2
3
4
5
6
7
sub cli{
my (@srv_list) = @_;
for my $list(@srv_list){
my $list = "http://usr:pwd\@my-home-page=@srv_list";
print "$list\n";
}
}

in @srv_list stehen x werte drin und ich möchte für jeden
dieser werte eine eigene datei erzeugen
liste1 in datei1
liste2 in datei2
usw.
kann mir bitte jemand helfen.

merci
rambo
renee
 2005-03-01 13:20
#52203 #52203
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn ich Dich richtig verstehen:
Code: (dl )
1
2
3
4
5
6
7
my @srv_list = qw(1 2 3 45);
for my $list(@srv_list){
my $file = '/home/'.$list.'.txt';
open(my $fh,">$file") or die $!;
print $fh $list,"\n";
close $fh;
}


Wenn es das nicht war, wäre es gut, wenn Du das Problem etwas detaillierter beschreiben könntest (mit Beispieldaten etc.)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Rambo
 2005-03-01 14:50
#52204 #52204
User since
2003-08-14
803 Artikel
BenutzerIn

user image
@renee danke ja so in der art wollte ich es schon benötige
aber trotzden noch mal hilfe.
hier mal der ganze code:

Code: (dl )
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
29
30
31
32
33
34
use strict;
use warnings;
use LWP::Simple;
use HTML::Parser;

my $file = "srv_html.txt";
my $url = 'http://usr:pwd\@my-home-page=pcon';
my $content = getstore($url,$file);

open(HTML_S2,"<$file") or die $!;
while (my $strings = <HTML_S2>)
{
  if ($strings =~ /href.*workstationid\&value\=([^"]+)".*href.*ipc2\&value\=([0-9\.\:]+)"/i)
  {
     my ($w,$i) = ($1,$2);
     #print "$w => $i\n";
     #print "$i\n";
     my @srv_list = $i;
     &cli(@srv_list);
  }
}
close HTML_S2;

sub cli{
  my (@srv_list) = @_;
  for my $list(@srv_list){
      my $list = "http://pixx:z0urself\@cute-ap3-fe.ar4.fra.dlh.de:11699/monitor?view=ipc2&value=@srv_list";  
      my $file = './home/'.$list.'.txt';
      open(my $fh,">$file") or die $!;
      print $fh $list,"\n";
      #print "$list\n";
      close $fh;
  }
}

so wie ich es jetzt habe meldet er
"Invalid argument at D:\PERL\http\t3.pl line 29, <HTML_S2> line 50." zeile 29 ist der open fh.
was will ich machen:
1. hole aus der ersten url die notewendigen informationen welches pc namen und ip adrssen sind. (das geht)
2. nehme jeweils eine ip adresse und füge sie an eine weiter
url an. (das geht auch, wenn 3 IP's dann 3x eine url)
3. ersztelle für jede der neuen urls ($list) eine eigene datei zwecks weiterverarbeitung. (das geht nicht :-( )

hoffe das ist besser beschrieben.
fürti rambo
Rambo
 2005-03-01 15:19
#52205 #52205
User since
2003-08-14
803 Artikel
BenutzerIn

user image
der fehler kommt wohl deswegen zu stande weil @srv_list
werte enthält die viel zu lang sind den hier
stehen ja kommplette seiten drin!
pq
 2005-03-01 15:22
#52206 #52206
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Rambo,01.03.2005, 13:50]
Code: (dl )
1
2
3
       my $list = "http://pixx:z0urself\@cute-ap3-fe.ar4.fra.dlh.de:11699/monitor?view=ipc2&value=@srv_list";   
      my $file = './home/'.$list.'.txt';
      open(my $fh,">$file") or die $!;

so wie ich es jetzt habe meldet er
"Invalid argument at D:\PERL\http\t3.pl line 29, <HTML_S2> line 50." zeile 29 ist der open fh.[/quote]
ähm... du versuchst, eine datei zu erstellen, die so aussieht:
Code: (dl )
/home/http://pixx:z0urself\@cute-ap3-fe.ar4.fra.dlh.de:11699/monitor?view=ipc2&value=...

das ist auch kein problem, aber ich bezweifle, dass du das willst.
du musst dir einen geeigneten dateinamen ausdenken.
wenn du den dateinamen so willst, musst du zuerst das verzeihcnis erstellen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Rambo
 2005-03-01 15:34
#52207 #52207
User since
2003-08-14
803 Artikel
BenutzerIn

user image
jep genau das habe ich jetzt auch heraus gefunden :-(
ich muss etwas schreiben was soviel kleine dateien
erzeugt wie ich daten haben und in diese dateien dann
die jeweiligen werte rein schreibe
so was wie
wenn x werte in @srv_list drin stehen
dann erstelle 5 dateien (d1 d2 d3 d4 d5) und schreibe jeweils
die daten pro eintrag aus srv_list rein.
Rambo
 2005-03-02 13:30
#52208 #52208
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hallo noch mal,
ich habe mein script fast fertig bis auf zwei kleine dinge für
die ich noch mal eure hilfe benötige
Code: (dl )
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use strict;
use warnings;
use LWP::Simple;

print "\n\nEnter String for Production or Test System URL
(e.g PU for Production or TEST Test System):\n";
chomp (my $input = <STDIN>);
$input = uc $input;
my $srv_url= 'http://Usr:pwd@my-home-page';
if ($input eq "TEST")
  {
   $srv_url = 'http://Usr2:pwd2@my-home-page';
  }

my $srv_file = "srv_site.html";
my $content = getstore($srv_url,$srv_file);

open(SRV_HTML,"<$srv_file") or die $!;
while (my $strings = <SRV_HTML>)
{
  if ($strings =~ /href.*workstationid\&value\=([^"]+)".*href.*ipc2\&value\=([0-9\.\:]+)"/i)
  {
     my ($w,$i) = ($1,$2);
     my $srv_list = "http://Usr:pwd@my-home-page=$i";
     &md_files($w,$i,$srv_list);            
  }
}
close SRV_HTML;

sub md_files
  {
  my ($w,$i,$srv_list) = @_;
      my @w1 = $w;
      for my $w1(@w1)
         {
          my $w1 = './home/'.$w1.'.txt';
          open(my $fh, ">$w1") or die $!;
          for ($srv_list)
             {
               my $content = get($srv_list);
               print $fh $content,"\n";
               close $fh;
               &con_cli($fh,$content,$w1,$w);  
             }
         }
   }

sub con_cli
  {
   my ($fh,$content,$w1,$w) = @_;
   my @w2 = $w1;
   my $cli_str;
   for my $cli(@w2)
      {
       open(CLI_HTML,"<$cli") or die $!;
       while ($cli_str = <CLI_HTML>)
            {
             if($cli_str =~ s/<tr><td>CLIENTS=(.+)<\/td><\/tr>/$1/){
             my @cli_str = split '&nbsp;', $cli_str;
             for $cli(@cli_str)
                {
                 my @wks = split 'pixxadm', $cli;
                 print "$w => @wks\n";
                }
             }
         }
      }  
   }
close CLI_HTML;

dies erzeugt folgende ausgabe
Code: (dl )
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
W2K-FRAPIC-AP03_3081 =>         RESA_BRU_BRU1GTA59M
W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU2CK0206
W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1GTA59M
W2K-FRAPIC-AP03_3081 => SITA_DTM_DTM1CKB029
W2K-FRAPIC-AP03_3081 => ARINC_BHX_BHXCK045
W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1CK0205
W2K-FRAPIC-AP03_3081 =>
W2K-FRAPIC-AP03_3081 =>
W2K-FRAPIC-AP03_3081 => SITA_PAD_PAD1CKB012
W2K-FRAPIC-AP03_3081 => ARINC_BHX_BHXCK051
W2K-FRAPIC-AP03_3081 => SITA_LAX_LAXBCKB009
W2K-FRAPIC-AP03_3081 => SITA_LAX_LAXBCKB017
W2K-FRAPIC-AP03_3081 => SITA_DTM_DTM1CKB027
W2K-FRAPIC-AP03_3081 => RESA_FRA_WNTCUTELAB1
W2K-FRAPIC-AP03_3081 => RESA_FRA_WNTCUTELAB1
W2K-FRAPIC-AP03_3081 => SITA_LEJ_LEJ1CKB005
W2K-FRAPIC-AP03_3081 => SITA_FRA_FRAB2BLH26
W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1GTA69M
W2K-FRAPIC-AP03_3081 => ARINC_BHX_BHXGT63A
W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU2CK0204
W2K-FRAPIC-AP03_3081 =>

W2K-FRAPIC-AP01_3083 =>         SITA_EWR_EWRBCKB031
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 =>
W2K-FRAPIC-AP01_3083 => RESA_BRU_BRU2CK0202
W2K-FRAPIC-AP01_3083 => ARINC_BHX_BHXCK050
W2K-FRAPIC-AP01_3083 => RESA_BRU_BRU2CK0208
W2K-FRAPIC-AP01_3083 => SITA_DTM_DTM1BOOEW1
W2K-FRAPIC-AP01_3083 => RESA_BRU_BRU2GTA60M
W2K-FRAPIC-AP01_3083 => ARINC_BHX_BHXGT63A
W2K-FRAPIC-AP01_3083 => SITA_PAD_PAD1CKB010
W2K-FRAPIC-AP01_3083 =>

W2K-FRAPIC-AP01_3081 =>
W2K-FRAPIC-AP01_3081 =>

was ich jetzt noch benötige ist ein zähler für jeden dieser server / clients das die leeren teile verschwinden und das die
die strings eingereit sind:
Code: (dl )
1
2
3
4
5
6
7
8
1. W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1GTA59M
2. W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU2CK0206
3. W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1GTA59M
4. W2K-FRAPIC-AP03_3081 => SITA_DTM_DTM1CKB029
5. W2K-FRAPIC-AP03_3081 => ARINC_BHX_BHXCK045
6. W2K-FRAPIC-AP03_3081 => RESA_BRU_BRU1CK0205
7. W2K-FRAPIC-AP03_3081 => SITA_PAD_PAD1CKB012
usw

könnet ihr mir hier ein tipp geben?

merci
rambo
Crian
 2005-03-02 13:53
#52209 #52209
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Füg mal \s* nach clients= ein, das sollte schonmal die Leerräume beseitigen.

Und mach mal

Code: (dl )
print "$w => @wks\n" if @wks;


statt

Code: (dl )
print "$w => @wks\n";



Der Zähler sollte dann kein Problem sein, oder?\n\n

<!--EDIT|Crian|1109764602-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Rambo
 2005-03-02 15:29
#52210 #52210
User since
2003-08-14
803 Artikel
BenutzerIn

user image
danke das hat die meisten problem gelöst :-)
die ausgabe ist jetzt wie folgt
Code: (dl )
1
2
3
4
5
6
7
8
9
W2K-FRAPIC-AP05_3083 =>         SITA_PAD_PAD1GTP005
W2K-FRAPIC-AP05_3083 => SITA_AMS_AMS1C0B808
W2K-FRAPIC-AP05_3083 => SITA_FRA_FRAB2BLH77
W2K-FRAPIC-AP05_3083 => ARINC_BHX_BHXGT63B
W2K-FRAPIC-AP05_3083 => SITA_FRA_FRAB2B0506
W2K-FRAPIC-AP05_3083 => SITA_DTM_DTM1CKB027
W2K-FRAPIC-AP05_3083 => RESA_FRA_WNTCUTELAB1
W2K-FRAPIC-AP05_3083 => RESA_FRA_WNTCUTELAB1
W2K-FRAPIC-AP05_3083 =>

aber damit kann ich leben :-)
ich hab schon mit zählern probiert aber bis jetzt noch nicht
hinbekommen :-(
Crian
 2005-03-03 12:52
#52211 #52211
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Vielleicht

Code: (dl )
print "$w => @wks\n" if grep {/\S/} @wks;


Ansonsten musst Du mal Dumpen, was da drin ist

Code: (dl )
1
2
use Data::Dumper;
print Dumper \@wks;


Das mit dem zählen bau ich Dir gern ein, wenn Du den aktuellen Code postest oder mir schickst.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2005-03-01 13:07.