Thread Hilfestellung bei Problem mit package (20 answers)
Opened by jan99 at 2015-03-27 08:06

jan99
 2015-03-27 08:06
#180402 #180402
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
Moin !

ich habe bestehenden package-Code für ein neues übernommen und in den Funktionen etwas angepasst. Dann wollte ich die Funktion erstmals starten. Bekomme aber folgende Meldung:

Quote
Can't locate object method "open" via package "EBL::ebl_reporting" (perhaps you forgot to load "EBL::ebl_reporting"?) at DWG2AIMS.pl line 66.
Drücken Sie eine beliebige Taste . . .


Mein Code ist:
Code (perl): (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
#!/usr/bin/perl
use strict;
use warnings;

use Getopt::Long;
use Win32::Service;
use 5.010;
use POSIX;
use EBL::ebl_monitoring;                           # Sonderfunktionen für EBL-Einsatz
use EBL::ebl_reporting;                            # Reportingfunktion
use File::Copy qw(copy);

# main-parameters
my %config=(
  "logstatus"=>1,                                  # soll Protokoll geschrieben werden
  "shellstatus"=>1,                                # zusätzliche Protokollausgabe Shell
  "active"=>0,                                     # damit wird die Funktion (Kopiervorgang und Server stop / start scharf geschaltet)
  "logfilename"=>'DWG2AIMS.log',                   # Dateiname für die Scriptausführung
  "folder_source"=>'',                             # Quelle der DWG-Dateien
);

# Reportsteuerung
my $log=EBL::ebl_reporting->open($config{logfile_name});
$log->log($config{logstatus});
$log->shell($config{shellstatus});


Das Package sieht wie folgt aus:
Code (perl): (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
package ebl::reporting;

use strict;
use warnings;
use IO::File;
#use Time::localtime;
require Time::localtime; 

sub open
{
  my $class=shift;
  my $log_file=shift;

  # Referenz auf STDOUT
  my $fh=\*STDOUT;

  # wenn object und kein File => neuer Name = alter Name
  if(ref $class && !$log_file)
  {
    $log_file=$class->{file};
    $class->{fh}->close();
  }

  # versuchen Fh zu öffnen
  if($log_file) {
    my $ofh=IO::File->new();
    my $mode='>';
    $mode='>>' if( ref $class );
    if($ofh->open($log_file,$mode) ) {
      $fh=$ofh;
    } else {
      $fh->print("ERROR open $log_file ($!)\nwrite to STDOUT\n");
    }
  }

  # objektwerte neu setzen wenn objekt
  if( ref $class ) {
    $class->{fh}=$fh;
    $class->{file}=$log_file;
    return $class;
  }

  # neues Objekt
  return bless({ fh=>$fh, file=>$log_file, on=>1 },$class);
}


Kann mir einer weiterhelfen bei der Fehlersuche ?

Gruß Jan
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread Hilfestellung bei Problem mit package