草庐IT

html - 从html中获取具体内容并在Perl中打印到txt文件

coder 2023-08-11 原文

我有一个 html 文件,其中包含论文 ID 和论文。所以我想依次打印这些 ID 和文件。 这是 html 文件和示例输出。

<META content="MSHTML 6.00.2900.2802" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 rightMargin=0 marginwidth="0" 
marginheight="0">
<DIV class=conf><A class=confName 
href="http://ehw.jpl.nasa.gov/events/ahs2006/">1st Conference on Adaptive 
Hardware and Systems (AHS-2006)</A></DIV>
<DIV class=menuoc>OpenConf Conference Management System</DIV>
<DIV class=menu>
<DIV class=menuitem><A 
href="http://www.eng.bahcesehir.edu.tr/openconf/chair/">Chair Home</A></DIV>
<DIV class=menuitem><A 
href="http://www.eng.bahcesehir.edu.tr/openconf/chair/signout.php">Sign 
Out</A></DIV>
<DIV class=menufiller>Logged in as: ahs2006&nbsp;</DIV></DIV>
<DIV class=mainbody><BR>
<P class=header>Assign Reviews</P>
<FORM action=/openconf/chair/assign_reviews.php method=post>
<DL>
<DT>
<P><B>Select Paper(s):</B></P>
<DD>
<P>[ Paper ID - Title (# Reviewers) ]</P>
<DD><SELECT multiple size=10 name=papers[]> <OPTION value=2>&nbsp;&nbsp;2 - 
Switchable Glass: A possible medium for Evolvable Hardware (4)</OPTION> 
<OPTION value=3>&nbsp;&nbsp;3 - An Efficient Multi-Objective Evolutionary 
Algorithm for Combinational Circuit Design (3)</OPTION> <OPTION 
value=4>&nbsp;&nbsp;4 - A Background Mismatch Calibration for Capacitive 
Digital-to-Analog Converters (3)</OPTION> <OPTION value=5>&nbsp;&nbsp;5 - 
Designing Electronic Circuits by Means of Gene Expression Programming 
(3)</OPTION> <OPTION value=6>&nbsp;&nbsp;6 - Coherence Based Fault Detection 
And Error Correction (3)</OPTION> <OPTION value=7>&nbsp;&nbsp;7 - Wormhole 
Routing with Virtual Channels using Dynamic Rate Control for Network-on... 
(2)</OPTION> <OPTION value=8>&nbsp;&nbsp;8 - Noise Analysis of Phase Locked 
Loops (3)</OPTION> <OPTION value=9>&nbsp;&nbsp;9 - Design and Analysis of a 
Second Order Phase Locked Loops (PLLs) (2)</OPTION> <OPTION value=10>10 - 
SW-HW Co-design and fault tolerant implementation for the LRID Wireless 
communication... (3)</OPTION> <OPTION value=11>11 - Adaptive PID Controller 
Using Parameter Optimization Algorithm (2)</OPTION> <OPTION value=12>12 - A 
Novel Self-organizing Hybrid Network Protocol (2)</OPTION> <OPTION 
value=13>13 - An Adaptive FPGA-Based Mechatronic Control System Supporting 
Partial Reconfiguration... (3)</OPTION> <OPTION value=14>14 - Generalized 
Disjunction Decomposition for the Evolution of Programmable Logic Array... 
(3)</OPTION> <OPTION value=15>15 - Woofer-Tweeter Adaptive Optics System 
(1)</OPTION> <OPTION value=16>16 - A Re-Programmable Platform for Dynamic 
Burn-in Test of Xilinx VirtexII 3000 FPGA... (3)</OPTION> <OPTION 
value=17>17 - Using hardware-based particle swarm method for dynamic 
optimization of adaptive ... (2)</OPTION> <OPTION value=18>18 - 
Hardware/software coevolution of genome programs and cellular processors 
(2)</OPTION> <OPTION value=19>19 - Systolic Array Based Adaptive Beamformer 
Modelling in SystemC Environment (2)</OPTION> <OPTION value=20>20 - A 
Reconfigurable Hardware Design Using FPGA (2)</OPTION> <OPTION value=21>21 - 
An FPGA Implemented Processor Architecture with Adaptive Resolution 
(2)</OPTION> <OPTION value=22>22 - Evolving Hardware with 
Self-reconfigurable connectivity in Xilinx FPGAs (2)</OPTION> <OPTION 
value=23>23 - Particle Swarm Optimization with Discrete Recombination: An 
Online Optimizer for... (2)</OPTION> <OPTION value=24>24 - Towards the 
Integration of Drive Control Loop Electronics of the JPL/Boeing Gyroscope... 
(2)</OPTION> <OPTION value=25>25 - An Incremental Evolutionary Strategy for 
the Design of FIR Filters Targeting Real... (2)</OPTION> <OPTION value=26>26 
- Adaptive Micro-Antenna on Silicon Substrate (3)</OPTION> <OPTION 
value=27>27 - Towards Fluent Sensor Networks: A Scalable and Robust 
Self-Deployment Approach (3)</OPTION> <OPTION value=28>28 - Comparison of 
Fuzzy-C Means, Hard C-Means and Differential Evolution Algorithm in... 
(2)</OPTION> <OPTION value=29>29 - Evolutionary Design of Digital Circuits: 
Where Are Current Limits? (2)</OPTION> <OPTION value=30>30 - GEZGİN &amp; 
GEZGİN-2: Adaptive Real-Time Image Processing Subsystems for Earth 
Observing... (3)</OPTION> <OPTION value=31>31 - A Multi-objective Genetic 
Algorithm for On-chip Real-time Adaptation of a Multi-... (2)</OPTION> 
<OPTION value=32>32 - An Efficient Technique for Preventing Single Event 
Disruptions in Synchronous and... (1)</OPTION> <OPTION value=33>33 - 
Architecture of a Dynamically Reconfigurable NoC for Adaptive Reconfigurable 
MPSoC (0)</OPTION> <OPTION value=34>34 - Embedded Reconfigurable Array 
Fabrics for Efficient Implementation of Image Compression... (1)</OPTION> 
<OPTION value=35>35 - Routing in Wireless Sensor Networks Using Ant Colony 
Optimization (2)</OPTION> <OPTION value=36>36 - Simulation of 
Multifunctional Combinational Modules Controlled by Vdd (3)</OPTION> <OPTION 
value=37>37 - Reconfigurable Parallel Computing Architecture for On-Board 
Data Processing (2)</OPTION> <OPTION value=38>38 - On comparison of Variable 
Length Representations by Means of Unconstrained Evolution... (3)</OPTION> 
<OPTION value=39>39 - VLSI Implementation of LMS Equaliser with Adaptive 
Length Selection for Wireless... (0)</OPTION> <OPTION value=41>41 - A 
Scalable Reconfigurable Analog to Digital Converter Architecture Targeting 
Low... (0)</OPTION> <OPTION value=42>42 - Linear Prediction with 
Differential Evolution Algorithm (2)</OPTION> <OPTION value=43>43 - Genetic 
Algorithm based Engine for Domain-Specific Reconfigurable Arrays 
(0)</OPTION> <OPTION value=44>44 - Non-Uniform Search Domain based Genetic 
Algorithm for the Synthesis and Continuous... (2)</OPTION> <OPTION 
value=45>45 - Design Concepts for a Dynamically Reconfigurable Wireless 
Sensor Node (2)</OPTION> <OPTION value=46>46 - On-Board Partial Run-Time 
Reconfiguration for Pico-Satellite Constellations (2)</OPTION> <OPTION 
value=47>47 - A Framework of Evolvable and Reconfigurable Sensor Networks 
for Aerospace –based... (0)</OPTION> <OPTION value=48>48 - Analytical 
Modelling of Power Attenuation under Parameter Fluctuations with 
Applications... (2)</OPTION> <OPTION value=49>49 - A New State Space 
Representation Method for Adaptive Log Domain Systems (2)</OPTION> <OPTION 
value=50>50 - Swarm Based Incremental Learning for Combinational Circuit 
Evolution (2)</OPTION> <OPTION value=51>51 - Gene Regulation Mechanisms 
introduced in the E valuation Criteria for a Hardware... (2)</OPTION> 
<OPTION value=52>52 - Automatic Hybrid Genetic Algorithm Based Printed 
Circuit Board Inspection (2)</OPTION> <OPTION value=53>53 - Population based 
FPGA solution to Mastermind game (2)</OPTION> <OPTION value=54>54 - A Large 
Scale Adaptable Multiplier for Cryptographic Applications (2)</OPTION> 
<OPTION value=55>55 - A Self-Tuning Analog Proportional-Integral-Derivative 
(PID) Controller (2)</OPTION> <OPTION value=56>56 - Self-Configurable Neural 
Network Processor for Adaptable FIR Filters (3)</OPTION> <OPTION value=57>57 
- On-Chip Evolution Using a Soft Processor Core Applied to Image Recognition 
(2)</OPTION> <OPTION value=58>58 - A Novel Adaptive Viterbi Algorithm and 
Its Implementation (2)</OPTION> <OPTION value=59>59 - An Efficient Hardware 
Architecture for H.264 Adaptive Deblocking Filter (2)</OPTION> <OPTION 
value=60>60 - A Low-Complexity Self-Calibrating Adaptive Quadrature Receiver 
(2)</OPTION> <OPTION value=61>61 - A Honeycomb Development Architecture for 
Robust Fault-Tolerant Design (2)</OPTION> <OPTION value=62>62 - Sate-Space 
based Analytical Modelling for Real-Time Fault Recovery and Self-Repair... 
(2)</OPTION> <OPTION value=63>63 - Strategies to On- Line Failure Recovery 
in Self- Adaptive Systems based on Dynamic... (2)</OPTION> <OPTION 
value=64>64 - A Platform for Digital Intrinsic Hardware Evolution 
(2)</OPTION> <OPTION value=65>65 - Face Recognition Using a Gabor Filter 
Bank Approach (2)</OPTION> <OPTION value=66>66 - Protecting Fingerprint Data 
using Watermarking (2)</OPTION> <OPTION value=67>67 - Debug Support for 
System-on-Chips, Considerations for Reconfigurable and Hybrid ... 
(2)</OPTION> <OPTION value=68>68 - Novel Techniques for Ensuring Secure 
Communications for Distributed Low Power Devices (2)</OPTION> <OPTION 
value=69>69 - A Modular Framework for the Evolution of Circuits on 
Configurable Transistor Array... (2)</OPTION> <OPTION value=70>70 - Power 
Driven Reconfigurable Complex Continuous Wavelet Transform Processor 
(2)</OPTION> <OPTION value=71>71 - A Tuning Technique for Switched-Capacitor 
Circuits (0)</OPTION> <OPTION value=72>72 - An Automatic Technique to 
Synthesize System-on-a-Chip to Adapt to Changing Environments (2)</OPTION> 
<OPTION value=73>73 - Picosatellite Constellations for Remote Sensing in LEO 
(2)</OPTION> <OPTION value=74>74 - Evolvable Hardware Applied to 
Nanotechnology (1)</OPTION> <OPTION value=75>75 - Gate-level Morphogenetic 
Evolvable Hardware for Scalability and Adaptation on FPGAs (2)</OPTION> 
<OPTION value=76>76 - Synthesis of MOS Analog Circuits by Evolutionary 
Methods (2)</OPTION> <OPTION value=77>77 - An Adaptive HDL Design 
Methodology for Hard IP and Soft IP Co-Protection (2)</OPTION> <OPTION 
value=78>78 - FSM and HSM watermarking: A Tutorial (3)</OPTION> <OPTION 
value=79>79 - Physics-based Model applied to Evolvable Hardware (2)</OPTION> 
<OPTION value=80>80 - A Generic On-Chip Debugger for Wireless Sensor 
Networks (goCDWSN) (2)</OPTION> <OPTION value=81>81 - The Gannet 
Service-based SoC: A Service-level Reconfigurable Architecture (2)</OPTION> 
<OPTION value=82>82 - A FPGA simulation using asexual genetic algorithms for 
integrated self-repair (2)</OPTION> <OPTION value=83>83 - USING THE 
“CELOXICA” FPGA BOARD AND THE MACHINE LEARNING ALGORITHM “LEM3‮.. 
(2)</OPTION> <OPTION value=84>84 - A Comparing Design of Satellite Attitude 
Control System Based on Reaction Wheel (0)</OPTION></SELECT> 
<P></P>
<DT>
<P><B>Select Reviewer(s):</B></P>
<DD>
<P><SPAN class=note>Tip: Click on ID, Name, or Reviews on the line below to 
re-sort this list (page will reload)</SPAN></P>
<DD>
<P>[ Reviewer ID - <A 
href="http://www.eng.bahcesehir.edu.tr/openconf/chair/assign_reviews.php?s=name">Name</A> 
(# <A 
href="http://www.eng.bahcesehir.edu.tr/openconf/chair/assign_reviews.php?s=reviews">Reviews</A>) 
]</P>
<DD><SELECT multiple size=10 name=reviewers[]> <OPTION value=4>&nbsp;&nbsp;4 
- [PC] Nizamettin Aydin (0)</OPTION> <OPTION value=5>&nbsp;&nbsp;5 - [PC] 
Yalcin Cekic (0)</OPTION> <OPTION value=6>&nbsp;&nbsp;6 - [PC] Didier 
Keymeulen (1)</OPTION> <OPTION value=7>&nbsp;&nbsp;7 - [PC] Emin Anarim 
(0)</OPTION> <OPTION value=8>&nbsp;&nbsp;8 - [PC] Murat Askar (0)</OPTION> 
<OPTION value=9>&nbsp;&nbsp;9 - [PC] Peter Athanas (3)</OPTION> <OPTION 
value=10>10 - [PC] Juergen Becker (3)</OPTION> <OPTION value=11>11 - [PC] 
Neil Bergmann (3)</OPTION> <OPTION value=12>12 - [PC] John Choma 
(2)</OPTION> <OPTION value=13>13 - [PC] Carlos A. Coello Coello (3)</OPTION> 
<OPTION value=14>14 - [PC] Sorin Cristoloveanu (1)</OPTION> <OPTION 
value=15>15 - [PC] Antonio Di Nola (1)</OPTION> <OPTION value=16>16 - [PC] 
Wai-Chi Fang (3)</OPTION> <OPTION value=17>17 - [PC] F. Joel Ferguson 
(0)</OPTION> <OPTION value=18>18 - [PC] Dario Floreano (1)</OPTION> <OPTION 
value=19>19 - [PC] Manfred Glesner (3)</OPTION> <OPTION value=20>20 - [PC] 
Maya Gokhale (3)</OPTION> <OPTION value=21>21 - [PC] Pauline Haddow 
(3)</OPTION> <OPTION value=22>22 - [PC] Ilker Hamzaoglu (1)</OPTION> <OPTION 
value=23>23 - [PC] Tetsuya Higuchi (2)</OPTION> <OPTION value=24>24 - [PC] 
Daniel Howard (3)</OPTION> <OPTION value=25>25 - [PC] Lishan Kang 
(3)</OPTION> <OPTION value=26>26 - [PC] Haluk Konuk (3)</OPTION> <OPTION 
value=27>27 - [PC] John Koza (3)</OPTION> <OPTION value=28>28 - [PC] Jason 
Lahn (1)</OPTION> <OPTION value=29>29 - [PC] Bernard Manderick (3)</OPTION> 
<OPTION value=30>30 - [PC] Trent McConaghy (2)</OPTION> <OPTION value=31>31 
- [PC] Bob McKay (1)</OPTION> <OPTION value=32>32 - [PC] Brian Meadows 
(3)</OPTION> <OPTION value=33>33 - [PC] Karlheinz Meier (2)</OPTION> <OPTION 
value=34>34 - [PC] Mohammad Mojarradi (2)</OPTION> <OPTION value=35>35 - 
[PC] J. M. Moreno (2)</OPTION> <OPTION value=36>36 - [PC] Masahiro Murakawa 
(3)</OPTION> <OPTION value=37>37 - [PC] Alex Orailoglu (0)</OPTION> <OPTION 
value=38>38 - [PC] Christos Papachristou (3)</OPTION> <OPTION value=39>39 - 
[PC] Marek A. Perkowski (1)</OPTION> <OPTION value=40>40 - [PC] Viktor 
Prasanna (3)</OPTION> <OPTION value=41>41 - [PC] Justinian Rosca 
(3)</OPTION> <OPTION value=42>42 - [PC] Eduardo Sanchez (3)</OPTION> <OPTION 
value=43>43 - [PC] Radu Secareanu (2)</OPTION> <OPTION value=44>44 - [PC] 
Sakir Sezer (3)</OPTION> <OPTION value=45>45 - [PC] Hajime Shibata 
(3)</OPTION> <OPTION value=46>46 - [PC] Horia-Nicolai Teodorescu 
(3)</OPTION> <OPTION value=47>47 - [PC] Jim Torresen (3)</OPTION> <OPTION 
value=48>48 - [PC] Andy Tyrrell (3)</OPTION> <OPTION value=49>49 - [PC] 
Sezer Goren Ugurdag (0)</OPTION> <OPTION value=50>50 - [PC] Ranga Vemuri 
(3)</OPTION> <OPTION value=51>51 - [PC] Tanya Vladimirova (3)</OPTION> 
<OPTION value=52>52 - [PC] Svetlana Yanushkevich (3)</OPTION> <OPTION 
value=53>53 - [PC] Xin Yao (3)</OPTION> <OPTION value=54>54 - [PC] Nukhet 
Yetis (0)</OPTION> <OPTION value=55>55 - [PC] Sanyou Zeng (3)</OPTION> 
<OPTION value=56>56 - [PC] Nazeeh Aranki (3)</OPTION> <OPTION value=57>57 - 
[PC] Hugo deGaris (3)</OPTION> <OPTION value=58>58 - [PC] Erik Dirkx 
(3)</OPTION> <OPTION value=59>59 - [PC] Ahmet Erdogan (2)</OPTION> <OPTION 
value=60>60 - [PC] Sharon Graves (2)</OPTION> <OPTION value=61>61 - [PC] 
David Gwaltney (2)</OPTION> <OPTION value=62>62 - [PC] Alister Hamilton 
(2)</OPTION> <OPTION value=63>63 - [PC] Alan Hunsberger (3)</OPTION> <OPTION 
value=64>64 - [PC] Srinivas Katkoori (2)</OPTION> <OPTION value=65>65 - [PC] 
Semion Kizhner (3)</OPTION> <OPTION value=66>66 - [PC] Gregory Larchev 
(2)</OPTION> <OPTION value=67>67 - [PC] Derek Linden (1)</OPTION> <OPTION 
value=68>68 - [PC] Klaus McDonald-Maier (1)</OPTION> <OPTION value=69>69 - 
[PC] Julian Miller (1)</OPTION> <OPTION value=70>70 - [PC] Lukas Sekanina 
(3)</OPTION> <OPTION value=71>71 - [PC] Raphael Some (3)</OPTION> <OPTION 
value=72>72 - [PC] Adrian Stoica (3)</OPTION> <OPTION value=73>73 - [PC] 
Gianluca Tempesti (1)</OPTION> <OPTION value=74>74 - [PC] Anil Thakoor 
(2)</OPTION> <OPTION value=75>75 - [PC] Gunnar Tufte (3)</OPTION> <OPTION 
value=76>76 - [PC] Tina Yu (2)</OPTION> <OPTION value=77>77 - [PC] Rolf 
Drechsler (3)</OPTION> <OPTION value=78>78 - [PC] Rajesh Galivanche 
(3)</OPTION> <OPTION value=79>79 - [PC] Paul Hasler (2)</OPTION> <OPTION 
value=80>80 - [PC] Kalmanje S Krishnakumar (0)</OPTION> <OPTION value=81>81 
- [PC] Osman Nuri Ucan (0)</OPTION> <OPTION value=82>82 - [PC] H Fatih 
Ugurdag (0)</OPTION></SELECT> 
<P></P>
<DT><INPUT type=submit value="Assign Reviews" name=submit> </DT></DL></FORM>
<P></P></DIV><!-- mainbody -->
<P>&nbsp;</P>
<DIV class=footerBorder></DIV><!-- DO NOT REMOVE THIS COPYRIGHT NOTICE -->
<P>
<DIV class=powered>Powered by <A href="http://www.openconf.org/" 
target=_blank>OpenConf</A><!--1.22--><BR>Copyright ©2002-2005 <A 
href="http://www.zakongroup.com/technology/" target=_blank>Zakon Group 
LLC</A></DIV><!-- DO NOT REMOVE THIS COPYRIGHT NOTICE --></BODY></HTML>

我想使用 perl 创建的 txt 文件是:

2 - Switchable Glass: A possible medium for Evolvable Hardware (4)
3 - An Efficient Multi-Objective Evolutionary Algorithm for Combinational Circuit Design (3)
4 - A Background Mismatch Calibration for Capacitive Digital-to-Analog Converters (3)
5 - Designing Electronic Circuits by Means of Gene Expression Programming (3)
6 - Coherence Based Fault Detection And Error Correction (3)
7 - Wormhole Routing with Virtual Channels using Dynamic Rate Control for Network-on... (2)
8 - Noise Analysis of Phase Locked Loops (3)
9 - Design and Analysis of a Second Order Phase Locked Loops (PLLs) (2)
10 - SW-HW Co-design and fault tolerant implementation for the LRID Wireless communication... (3)
11 - Adaptive PID Controller Using Parameter Optimization Algorithm (2)
12 - A Novel Self-organizing Hybrid Network Protocol (2)
13 - An Adaptive FPGA-Based Mechatronic Control System Supporting Partial Reconfiguration... (3)
14 - Generalized Disjunction Decomposition for the Evolution of Programmable Logic Array... (3)
15 - Woofer-Tweeter Adaptive Optics System (1)
16 - A Re-Programmable Platform for Dynamic Burn-in Test of Xilinx VirtexII 3000 FPGA... (3)
17 - Using hardware-based particle swarm method for dynamic optimization of adaptive ... (2)
18 - Hardware/software coevolution of genome programs and cellular processors (2)
19 - Systolic Array Based Adaptive Beamformer Modelling in SystemC Environment (2)
20 - A Reconfigurable Hardware Design Using FPGA (2)
21 - An FPGA Implemented Processor Architecture with Adaptive Resolution (2)
22 - Evolving Hardware with Self-reconfigurable connectivity in Xilinx FPGAs (2)
23 - Particle Swarm Optimization with Discrete Recombination: An Online Optimizer for... (2)
24 - Towards the Integration of Drive Control Loop Electronics of the JPL/Boeing Gyroscope... (2)
25 - An Incremental Evolutionary Strategy for the Design of FIR Filters Targeting Real... (2)
26 - Adaptive Micro-Antenna on Silicon Substrate (3)
27 - Towards Fluent Sensor Networks: A Scalable and Robust Self-Deployment Approach (3)
28 - Comparison of Fuzzy-C Means, Hard C-Means and Differential Evolution Algorithm in... (2)
29 - Evolutionary Design of Digital Circuits: Where Are Current Limits? (2)

等等..

到目前为止,我已经编写了这段代码,但我不明白为什么它不起作用。它不会向屏幕和文本文件打印任何内容。任何帮助将不胜感激。谢谢!

use strict;
use warnings;  

use HTML::TreeBuilder;

my $tree = HTML::TreeBuilder->new_from_content(
    do { local $/; <DATA> }
);
open(my $fh, '>', 'outputs.txt');
my $i = 2;
for ( $tree->look_down( 'name' => 'papers' ) ) {
    my $papers = $_->look_down( 'OPTION value' => 'i' )->as_trimmed_text;
    # my $comment  = $_->look_down( 'class' => 'content' )->as_trimmed_text;
    # my $name     = $_->look_down( '_tag'  => 'h3' )->as_trimmed_text;
    # $name =~ s/^Re:\s*//;
    # $name =~ s/\s*$location\s*$//;

    print "Paper: $papers\n";
    print $fh "Paper: $papers\n";
    $i++;
}

最佳答案

你把 look_down 搞得太复杂了, 用于属性。简单 find() the <option> elements .

foreach my $papers ( $tree->look_down( 'name' => 'papers[]' ) ) {
    foreach my $option ( $papers->find( 'option' ) ) {
        say $option->as_trimmed_text;
    }
}

另请注意 name <select> 的属性是papers[] , 不是 papers . []是名称的一部分。

关于html - 从html中获取具体内容并在Perl中打印到txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523636/

有关html - 从html中获取具体内容并在Perl中打印到txt文件的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  4. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  5. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  6. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  9. ruby - 将数组的内容转换为 int - 2

    我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]

  10. Ruby 写入和读取对象到文件 - 2

    好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信

随机推荐