File: Include.pm

package info (click to toggle)
libfilter-perl 1.57-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 640 kB
  • ctags: 765
  • sloc: perl: 911; makefile: 15
file content (39 lines) | stat: -rw-r--r-- 617 bytes parent folder | download | duplicates (7)
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
package
  Include ;
 
use Filter::Util::Call ;
use IO::File ;
use Carp ;
 
sub import
{
    my ($self) = shift ;
    my ($filename) = shift ;
    my $fh = new IO::File "<$filename" 
	or croak "Cannot open file '$filename': $!" ;

    my $first_time = 1 ;
    my ($orig_filename, $orig_line) = (caller)[1,2] ;
    ++ $orig_line ;

    filter_add(
	sub 
	{
	    $_ = <$fh> ;

	    if ($first_time) {
	        $_ = "#line 1 $filename\n$_"  ;
	        $first_time = 0 ;
	    }

	    if ($fh->eof) {
	        $fh->close ;
		$_ .= "#line $orig_line $orig_filename\n" ;
	        filter_del() ;
	    }
	    1 ;
	}) 
}
 
1 ;