perl에서 파일핸들 참조해서 특정값 추출시

getto의 이미지

파일핸들로 참조한 파일에 특정열을 찾아서 특정열에서 일정값을 뽑은 후에 또 다른 파일에서 다른 값을 뽑을려고 참조하려는데 잘 안됩니다.

my $file = '/home/mrtg/www/bd/192.168.10.1_1001.html';
open( F, $file ) || die "Oops! $!";
seek( F, -4592, 2 );
my $line = <F>;
my $value = substr( $line, 2, 5 );
my $num = '1:1';

if ( $value > 50 )
{
&do_page ("bd_$num traffic $value ");
}

close F;

my $file3 = '/home/mrtg/www/bd/192.168.10.1_1003.html';
open( F, $file3 ) || die "Oops! $!";
seek( F, -4592, 2 );
my $line3 = <F>;
my $value3 = substr( $line3, 2, 5 );
my $num3 = '1:1';

if ( $value3 > 50 )
{
&do_page ("bd_$num traffic $value ");
}

close F;

이렇게 작성하고 난 후에 다음 페이지를 참조하여 위와 같은 값을 얻어내려고 다시 위와 같이 반복(파일명과 변수명을 변경)하였으나 첫번째 값만을 가져오고 두번째 값을 가져오지 못합니다. 무엇이 문제인지 고수님들 봐주시면 감사하겠습니다.

코퍼스의 이미지

음..가져오지 못한다는 것이 구체적으로 어떻게요?
파일 오픈이 실패는 아닐것 같은데..함수가 실행이 안되나요...아니면 올바르지 않은 값이 나오나요??

음.. 그리고 혹시 두 번째 패러그래프에서
<code>
my $line3 = <F>;
my $value3 = substr( $line3, 2, 5 );
my $num3 = '1:1';

if ( $value > 50 )
{
&do_page ("bd_$num traffic $value ");
}

</code>
여기서 do_page 함수 에서는 $value3 을 출력하는게 맞는것 아닌가요??

A few Good Man

getto의 이미지

my $file3 = '/home/mrtg/www/bd/192.168.10.1_1003.html';
open( F, $file ) || die "Oops! $!";
seek( F, -4592, 2 );
my $line3 = <F>;
my $value3 = substr( $line3, 2, 5 );
my $num3 = '1:3';

if ( $value3 > 50 )
{
&do_page ("bd_$num traffic $value ");
}

close F;

두번째에서 value3을 출력하리라 생각했는데 첫번째 $value의 값을 가져오네여...결과출력을 하게되면
bd_1:1 traffic 60%
bd_1:3 traffic 60%
이렇게 $value 값만 출력됩니다. 1:3에서는 그페이지에 해당하는 값($value3)을 가져와야 하는데 $value 값을 그대로 가져와버리네요...무엇이 문제인지...

익명 사용자의 이미지

getto wrote:
파일핸들로 참조한 파일에 특정열을 찾아서 특정열에서 일정값을 뽑은 후에 또 다른 파일에서 다른 값을 뽑을려고 참조하려는데 잘 안됩니다.

my $file = '/home/mrtg/www/bd/192.168.10.1_1001.html';
open( F, $file ) || die "Oops! $!";
seek( F, -4592, 2 );
my $line = <F>;
my $value = substr( $line, 2, 5 );
my $num = '1:1';

if ( $value > 50 )
{
&do_page ("bd_$num traffic $value ");
}

close F;

my $file3 = '/home/mrtg/www/bd/192.168.10.1_1003.html';
open( F, $file ) || die "Oops! $!"; <-- 이곳이 문제인것 같은데요... $file3
seek( F, -4592, 2 );
my $line3 = <F>;
my $value3 = substr( $line3, 2, 5 );
my $num3 = '1:1';

if ( $value > 50 )
{
&do_page ("bd_$num traffic $value ");
}

close F;

이렇게 작성하고 난 후에 다음 페이지를 참조하여 위와 같은 값을 얻어내려고 다시 위와 같이 반복(파일명과 변수명을 변경)하였으나 첫번째 값만을 가져오고 두번째 값을 가져오지 못합니다. 무엇이 문제인지 고수님들 봐주시면 감사하겠습니다.

$file3으로 하셔야할것 같네요.
use strick; <-- 이거 하시고
perl -cw 파일명
생활하세요..^^

익명 사용자의 이미지

아 그건 위에껄 복사해서 붙여놓고 질문하다 보니 제가 수정을 하나 못했네요..그건 당연히 $file3으로 되어 있고 use strick;도 당연히 되있습니다.
소스만 적어놓다 보니 기본적인 사항은 빼놓고 질문한거구요..

raymundo의 이미지

그러면 원문을 정확히 현재 상태에 맞게 좀 고쳐주시고, code 태그로 둘러싸주시면 좋겠네요. 볼때마다 변수명이 잘못된 것만 눈에 들어와서...

두번째 코드 문단에 do_page 인자 쪽에도 $value 가 아니라 $value3 으로 되어 있는 건 맞나요?

좋은 하루 되세요!

익명 사용자의 이미지

strick????

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.