나는 c 파일을 가지고 있는데, 나는 c 파일을 구걸 할 때 약간의 정보를 추가해야한다. 문자열과 숫자 및 값으로 키가있는 해시 테이블이 하나 있습니다. 해당 테이블을 사용하여 문자열이 C 파일에 정보를 추가하고 있음을 발견하면 검색 중입니다. 나는 "add information to a file using perl"질문에 게시 된 스크립트를 사용하여이 작업을 수행했습니다. 지금 나는 string.In 내 스크립트에서 나는 문자열 앞에 추가 오전 발견하면 C 파일의 beginging에서 정보를 추가해야합니다. 지금 어떻게해야합니까? 사전에 감사합니다. perl을 사용하여 파일의 시작 부분에 정보를 추가하는 방법
0
A
답변
0
(. 난 그냥 같은 질문 것으로 보인다 무엇을 the SitePoint forums에 준 대답에서 크로스 게시)
슬프게도, 전체를 다시 작성할 필요없이 파일의 시작 부분에 정보를 삽입 할 수있는 방법이 없습니다 한 번에 하나의 줄이 아닌 전체 파일을 읽고 내용에 나타나는 문자열을 확인하고 해당 정보 항목을 새 파일에 쓰고 (마침내!) 원래 내용을 새 파일에 쓰십시오.
#!/usr/bin/env perl
use strict;
use warnings;
use File::Slurp;
my %strings = (
'string1' => "information \n",
'string2' => "information2 \n",
'string3' => "information3 \n",
);
my $test_string = "(" . join("|", keys %strings) . ")";
# First make a list of all matched strings (including the number of times
# each was found, although I assume that's not actually relevant)
my $code = read_file('c.c');
my %found;
while ($code =~ /$test_string/g) {
$found{$1}++;
}
# If %found is empty, we didn't find anything to insert, so no need to rewrite
# the file
exit unless %found;
# Write the prefix data to the new file followed by the original contents
open my $out, '>', 'c.c.new';
for my $string (sort keys %found) {
print $out $strings{$string};
}
print $out $code;
# Replace the old file with the new one
rename 'c.c.new', 'c.c';
2
관련 문제
- 1. g ++에서 텍스트 파일의 시작 부분에 추가하는 방법
- 2. 매우 큰 파일의 시작 부분에 두 줄을 추가하는 효율적인 방법
- 3. 파일의 시작 부분에 write()?
- 4. 파일의 각 줄 시작 부분에 문자열을 추가하는 방법
- 5. 파일의 시작 부분에 데이터 추가
- 6. Python 스크립트 (파일)의 시작 부분에 텍스트를 추가하는 간단한 방법
- 7. ListView의 시작 부분에 특수 항목을 추가하는 방법
- 8. 파일의 시작 부분에 이상한 문자가 있습니다
- 9. iPhone - 오디오 파일의 시작 부분에 데이터를 추가하십시오.
- 10. 파일의 모든 기능 시작 부분에 printf 추가
- 11. 파일에서의 getline 후 파일의 시작 부분에
- 12. C++에서 파일의 시작 부분에 포인터를 얻는 방법
- 13. 에코 >> 스타일은 파일의 시작 부분에 덧붙여집니다.
- 14. Sitemap XML 형식 : 새 기사가 파일의 시작 부분에 있어야합니까?
- 15. pyparsing을 사용하여 줄 시작 부분에 공백 맞추기
- 16. 파일의 처음 부분에 쓰십시오.
- 17. 파일의 시작 부분에 텍스트 및 행 추가 (C++)
- 18. 정규 표현식을 사용하여 정보를 얻으려면 perl을 사용하십시오.
- 19. BitSet 버퍼의 시작 부분에 비트를 추가하는 방법은 무엇입니까?
- 20. iPhone - 오디오 파일의 시작 부분에 "무음"을 묻습니다.
- 21. 메뉴 시작 부분에 메뉴를 선택하는 옵션 추가
- 22. Perl을 사용하여 파일의 행을 비교하는 방법은 무엇입니까?
- 23. Perl을 사용하여 파일의 키로 값 바꾸기
- 24. Perl을 사용하여 Excel 파일의 열 머리글
- 25. perl을 사용하여 외부 파일의 perl 데이터 구조를 읽는 방법
- 26. perl을 사용하여 압축 된 gz 파일의 수정 시간을 얻는 방법
- 27. `tab '의 시작 부분에 커서를 놓는 방법
- 28. 방법 정력에 문장의 시작 부분에 단어를 이동하는
- 29. 화면의 특정 부분에 스프라이트를 추가하는 방법
- 30. 왜 .class 파일의 시작 부분에 마법 번호가 필요합니까?
안녕하세요, 난 당신의 코드를 시도하지만 그 질문 엔 두 개의 해시 테이블을 가지고 내가 "펄을 사용하여 파일에 정보를 추가"에 게시하고 무엇을 내 코드를 볼 수 also.if는 오류 및 출력을 제공 나던 그 두 가지를 사용하고 나는 c 파일에서 찌르는 것을 발견했고 c 파일의 문자열 앞에 정보를 추가했습니다. 그러나 코드에서 dint는 어디에서 찾았습니까? @ Dave – viswa
@viswa : 새로운 정보는'for $ my string (sort keys % found) '루프에 의해 파일에 기록됩니다. SitePoint에 대한 질문에서 기존 파일의 시작 부분에 정보를 추가하도록 지정했기 때문에이 코드는 디스크의 파일을 수정하기 만하고 터미널에 출력을 제공하지 않습니다. 변경된 버전을 대신 화면에 표시하려면 두 개의'print $ out ...'문에서'$ out'을 제거하십시오. –
도움을 주셔서 대단히 감사 드리며 지금은 노력하고 있습니다. – viswa